// Licensed to Cloudera, Inc. under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  Cloudera, Inc. licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/* parser generated by jison 0.4.17 */
/*
  Returns a Parser object of the following structure:

  Parser: {
    yy: {}
  }

  Parser.prototype: {
    yy: {},
    trace: function(),
    symbols_: {associative list: name ==> number},
    terminals_: {associative list: number ==> name},
    productions_: [...],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
    table: [...],
    defaultActions: {...},
    parseError: function(str, hash),
    parse: function(input),

    lexer: {
        EOF: 1,
        parseError: function(str, hash),
        setInput: function(input),
        input: function(),
        unput: function(str),
        more: function(),
        less: function(n),
        pastInput: function(),
        upcomingInput: function(),
        showPosition: function(),
        test_match: function(regex_match_array, rule_index),
        next: function(),
        lex: function(),
        begin: function(condition),
        popState: function(),
        _currentRules: function(),
        topState: function(),
        pushState: function(condition),

        options: {
            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
        },

        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
        rules: [...],
        conditions: {associative list: name ==> set},
    }
  }


  token location info (@$, _$, etc.): {
    first_line: n,
    last_line: n,
    first_column: n,
    last_column: n,
    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
  }


  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
    text:        (matched text)
    token:       (the produced terminal token, if any)
    line:        (yylineno)
  }
  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
    loc:         (yylloc)
    expected:    (string describing the set of expected tokens)
    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
  }
*/
import SqlParseSupport from 'parse/sql/phoenix/sqlParseSupport';

var phoenixSyntaxParser = (function(){
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[4,8,12,16,161,228,258,314,330,333,337,499],$V1=[2,613],$V2=[333,337],$V3=[2,614],$V4=[1,35],$V5=[1,27],$V6=[1,28],$V7=[1,18],$V8=[1,33],$V9=[1,34],$Va=[1,29],$Vb=[1,31],$Vc=[1,30],$Vd=[1,36],$Ve=[1,45],$Vf=[1,47],$Vg=[1,43],$Vh=[1,46],$Vi=[1,42],$Vj=[81,333,337],$Vk=[2,435],$Vl=[1,53],$Vm=[1,61],$Vn=[1,62],$Vo=[1,75],$Vp=[2,397],$Vq=[1,80],$Vr=[1,81],$Vs=[32,254],$Vt=[16,32,43,50,54,55,63,77,79,81,85,95,107,108,109,112,113,120,125,129,140,142,154,169,177,188,201,202,203,204,205,206,207,208,209,213,215,219,226,227,228,240,249,251,254,333,337,341,342,345,349,350,351,352,353,354,356,359,360,361,362,364,367,368,370,371,373,374,376,378,379,380,381,382,385,386,399,433],$Vu=[81,249,333,337],$Vv=[63,113,215,333,337,341,342],$Vw=[2,770],$Vx=[1,95],$Vy=[63,113,215,341,342,351],$Vz=[63,113,215,293,333,337,341,342,351],$VA=[2,767],$VB=[1,100],$VC=[55,63,113,215,341,342,351],$VD=[16,63,113,215,341,342,351],$VE=[79,85,228],$VF=[1,166],$VG=[1,167],$VH=[1,122],$VI=[1,117],$VJ=[1,128],$VK=[1,130],$VL=[1,132],$VM=[1,115],$VN=[1,164],$VO=[1,168],$VP=[1,169],$VQ=[1,133],$VR=[1,155],$VS=[1,156],$VT=[1,157],$VU=[1,158],$VV=[1,159],$VW=[1,160],$VX=[1,161],$VY=[1,162],$VZ=[1,148],$V_=[1,149],$V$=[1,142],$V01=[1,131],$V11=[1,143],$V21=[1,118],$V31=[1,120],$V41=[1,119],$V51=[1,123],$V61=[1,121],$V71=[1,163],$V81=[1,165],$V91=[54,55,63,79,81,95,96,107,112,113,215,228,240,254,256,257,258,281,282,283,284,285,286,287,288,289,290,291,293,294,341,342,344,345,348,351,355,363,383,384],$Va1=[81,85,169,249,333,337],$Vb1=[2,1091],$Vc1=[1,221],$Vd1=[1,236],$Ve1=[1,237],$Vf1=[1,225],$Vg1=[1,222],$Vh1=[1,223],$Vi1=[1,224],$Vj1=[1,231],$Vk1=[1,230],$Vl1=[1,229],$Vm1=[1,232],$Vn1=[1,227],$Vo1=[1,226],$Vp1=[1,220],$Vq1=[1,228],$Vr1=[1,239],$Vs1=[1,238],$Vt1=[32,43,54,55,63,77,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,240,249,251,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$Vu1=[1,245],$Vv1=[1,251],$Vw1=[1,253],$Vx1=[32,43,54,55,63,77,79,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,240,249,251,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$Vy1=[1,258],$Vz1=[32,43,50,54,55,63,77,79,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,240,249,251,254,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$VA1=[32,43,54,55,63,77,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,240,249,251,305,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$VB1=[43,54,55,63,79,81,85,113,125,140,154,177,188,201,202,203,204,205,206,207,208,209,213,215,219,228,249,251,333,337,341,342,351],$VC1=[140,228],$VD1=[1,277],$VE1=[43,50,81,85,95,96,109,169,177,188,201,202,203,204,205,206,207,208,209,213,219,249,251,333,337],$VF1=[81,85],$VG1=[2,46],$VH1=[1,289],$VI1=[43,333,337],$VJ1=[43,125,333,337],$VK1=[43,50,77,79,125,333,337],$VL1=[43,50],$VM1=[251,333,337],$VN1=[85,169,251,333,337],$VO1=[32,50,81,85],$VP1=[161,228],$VQ1=[2,1069],$VR1=[81,177,188,213,219,249,333,337],$VS1=[2,448],$VT1=[1,317],$VU1=[96,234,256,257],$VV1=[81,85,169,177,188,201,202,203,204,205,206,207,208,209,213,219,249,251,333,337],$VW1=[43,54,55,63,81,85,95,113,129,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,249,251,333,337,341,342,349,351,352,361,362,371,376,380,386,433],$VX1=[32,43,54,55,63,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,240,249,251,333,337,341,342,345,349,350,351,352,361,362,371,376,380,386,433],$VY1=[361,362,386],$VZ1=[54,55,63,79,95,96,107,112,113,215,254,256,257,258,281,282,283,284,285,286,287,288,289,290,291,293,294,341,342,344,345,348,351,355,363,383,384],$V_1=[32,43,50,54,55,63,77,81,85,95,96,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,209,213,215,219,226,227,240,249,251,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$V$1=[32,43,50,54,55,63,77,79,81,85,95,96,108,109,113,125,129,140,142,154,169,177,188,201,202,203,204,205,206,207,208,209,213,215,219,226,227,228,240,249,251,254,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$V02=[81,188,213,219,249,333,337],$V12=[81,85,177,188,213,219,249,251,333,337],$V22=[1,422],$V32=[1,425],$V42=[1,423],$V52=[1,427],$V62=[1,424],$V72=[1,426],$V82=[1,429],$V92=[1,428],$Va2=[81,85,177,188,201,202,203,204,205,206,207,208,209,213,219,249,251,333,337],$Vb2=[43,54,55,63,81,85,113,177,188,201,202,203,204,205,206,207,208,209,213,215,219,249,251,333,337,341,342,351],$Vc2=[32,43,54,55,63,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,249,251,333,337,341,342,349,351,352,361,362,371,376,380,386,433],$Vd2=[43,54,55,63,81,85,113,129,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,249,251,333,337,341,342,349,351,361,362,371,376,380,386,433],$Ve2=[1,447],$Vf2=[81,219],$Vg2=[1,461],$Vh2=[1,489],$Vi2=[1,490],$Vj2=[1,491],$Vk2=[1,477],$Vl2=[1,478],$Vm2=[1,479],$Vn2=[1,480],$Vo2=[1,481],$Vp2=[1,482],$Vq2=[1,483],$Vr2=[1,484],$Vs2=[1,485],$Vt2=[1,486],$Vu2=[1,487],$Vv2=[1,488],$Vw2=[81,213,219,249,333,337],$Vx2=[55,63,79,113,215,341,342,351],$Vy2=[1,523],$Vz2=[81,85,219],$VA2=[32,43,54,55,63,77,81,85,95,108,109,113,129,142,169,177,188,201,202,203,204,205,206,207,208,209,213,215,219,226,227,240,249,251,333,337,341,342,345,349,350,351,352,361,362,367,370,371,373,374,376,380,386,433],$VB2=[1,531],$VC2=[85,333,337],$VD2=[1,547],$VE2=[1,548],$VF2=[50,81,85,95,96,109],$VG2=[2,881],$VH2=[1,551],$VI2=[81,213,249,333,337],$VJ2=[81,85,177,188,201,202,203,204,205,206,207,208,213,219,249,251,333,337],$VK2=[2,356],$VL2=[1,567],$VM2=[50,81,85,95,96],$VN2=[81,85,188,213,219,249,333,337],$VO2=[352,489],$VP2=[1,621],$VQ2=[85,109],$VR2=[81,349,357,383,489],$VS2=[2,1127],$VT2=[81,85,129,213,249,333,337,376],$VU2=[81,349],$VV2=[2,1137],$VW2=[1,651],$VX2=[1,652],$VY2=[1,653],$VZ2=[1,661],$V_2=[1,662],$V$2=[2,1142],$V03=[1,669],$V13=[365,372],$V23=[2,196],$V33=[2,197];
var parser = {trace: function trace () { },
yy: {},
symbols_: {"error":2,"DataDefinition_EDIT":3,"ALTER":4,"CURSOR":5,"AlterTable_EDIT":6,"AlterView_EDIT":7,"CREATE":8,"DatabaseDefinition_EDIT":9,"TableDefinition_EDIT":10,"ViewDefinition_EDIT":11,"DROP":12,"DropDatabaseStatement_EDIT":13,"DropTableStatement_EDIT":14,"DropViewStatement_EDIT":15,"SET":16,"TruncateTableStatement_EDIT":17,"UseStatement_EDIT":18,"DataDefinition":19,"AlterTable":20,"AlterView":21,"DatabaseDefinition":22,"RoleDefinition":23,"TableDefinition":24,"ViewDefinition":25,"DropDatabaseStatement":26,"DropRoleStatement":27,"DropTableStatement":28,"DropViewStatement":29,"ALL":30,"SetOption":31,"=":32,"SetValue":33,"TruncateTableStatement":34,"UseStatement":35,"AlterTableLeftSide":36,"PartitionSpec":37,"AlterTableLeftSide_EDIT":38,"TABLE":39,"SchemaQualifiedTableIdentifier":40,"SchemaQualifiedTableIdentifier_EDIT":41,"AlterViewLeftSide":42,"AS":43,"QuerySpecification":44,"AlterViewLeftSide_EDIT":45,"QuerySpecification_EDIT":46,"VIEW":47,"OptionalComment":48,"Comment":49,"COMMENT":50,"QuotedValue":51,"OptionalComment_INVALID":52,"Comment_INVALID":53,"SINGLE_QUOTE":54,"DOUBLE_QUOTE":55,"VALUE":56,"DatabaseOrSchema":57,"OptionalIfNotExists":58,"RegularIdentifier":59,"DatabaseDefinitionOptionals":60,"OptionalIfNotExists_EDIT":61,"DatabaseDefinitionOptionals_EDIT":62,"ROLE":63,"TableDefinitionRightPart":64,"TableDefinitionRightPart_EDIT":65,"TableIdentifierAndOptionalColumnSpecification":66,"OptionalPartitionedBy":67,"OptionalAsSelectStatement":68,"TableIdentifierAndOptionalColumnSpecification_EDIT":69,"PartitionedBy_EDIT":70,"OptionalAsSelectStatement_EDIT":71,"SchemaQualifiedIdentifier":72,"OptionalColumnSpecificationsOrLike":73,"OptionalColumnSpecificationsOrLike_EDIT":74,"SchemaQualifiedIdentifier_EDIT":75,"ParenthesizedColumnSpecificationList":76,"LIKE":77,"ParenthesizedColumnSpecificationList_EDIT":78,"(":79,"ColumnSpecificationList":80,")":81,"ColumnSpecificationList_EDIT":82,"RightParenthesisOrError":83,"ColumnSpecification":84,",":85,"ColumnSpecification_EDIT":86,"ColumnIdentifier":87,"ColumnDataType":88,"OptionalColumnOptions":89,"ColumnDataType_EDIT":90,"ColumnOptions_EDIT":91,"ColumnOptions":92,"ColumnOption":93,"ColumnOption_EDIT":94,"NOT":95,"NULL":96,"PrimitiveType":97,"ArrayType":98,"MapType":99,"StructType":100,"ArrayType_INVALID":101,"MapType_INVALID":102,"StructType_INVALID":103,"ArrayType_EDIT":104,"MapType_EDIT":105,"StructType_EDIT":106,"ARRAY":107,"<":108,">":109,"AnyCursor":110,"GreaterThanOrError":111,"MAP":112,"STRUCT":113,"StructDefinitionList":114,"StructDefinitionList_EDIT":115,"StructDefinition":116,"StructDefinition_EDIT":117,"Commas":118,"RegularOrBacktickedIdentifier":119,":":120,"ColumnDataTypeList":121,"ColumnDataTypeList_EDIT":122,"ColumnDataTypeListInner_EDIT":123,"PartitionedBy":124,"PARTITION":125,"BY":126,"RangeClause":127,"RangeClause_EDIT":128,"RANGE":129,"ParenthesizedColumnList":130,"ParenthesizedPartitionValuesList":131,"ParenthesizedColumnList_EDIT":132,"ParenthesizedPartitionValuesList_EDIT":133,"PartitionValueList":134,"PartitionValueList_EDIT":135,"PartitionValue":136,"PartitionValue_EDIT":137,"ValueExpression":138,"LessThanOrEqualTo":139,"VALUES":140,"ValueExpression_EDIT":141,"COMPARISON_OPERATOR":142,"CommitLocations":143,"OptionalParenthesizedViewColumnList":144,"ParenthesizedViewColumnList_EDIT":145,"ParenthesizedViewColumnList":146,"ViewColumnList":147,"ViewColumnList_EDIT":148,"ColumnReference":149,"OptionalIfExists":150,"OptionalCascade":151,"OptionalIfExists_EDIT":152,"OptionalPurge":153,"PURGE":154,"CommonTableExpression":155,"SelectStatement":156,"OptionalUnions":157,"SelectStatement_EDIT":158,"OptionalUnions_EDIT":159,"CommonTableExpression_EDIT":160,"WITH":161,"WithQueries":162,"WithQueries_EDIT":163,"WithQuery":164,"WithQuery_EDIT":165,"TableSubQueryInner":166,"TableSubQueryInner_EDIT":167,"FromClause":168,"FROM":169,"TableReferenceList":170,"FromClause_EDIT":171,"TableReferenceList_EDIT":172,"TableReference":173,"TableReference_EDIT":174,"OptionalGroupByClause":175,"GroupByClause":176,"GROUP":177,"GroupByColumnList":178,"GroupByClause_EDIT":179,"GroupByColumnList_EDIT":180,"ColumnGroupingSets":181,"ColumnGroupingSets_EDIT":182,"ColumnGroupingSet_EDIT":183,"ColumnReference_EDIT":184,"GroupByColumnListPartTwo_EDIT":185,"OptionalHavingClause":186,"HavingClause":187,"HAVING":188,"HavingClause_EDIT":189,"OptionalJoins":190,"Joins":191,"Joins_INVALID":192,"JoinType":193,"TablePrimary":194,"OptionalJoinCondition":195,"Join_EDIT":196,"JoinType_EDIT":197,"TablePrimary_EDIT":198,"JoinCondition_EDIT":199,"Joins_EDIT":200,"CROSS":201,"JOIN":202,"FULL":203,"OUTER":204,"INNER":205,"LEFT":206,"SEMI":207,"RIGHT":208,"ON":209,"UsingColList":210,"OptionalLimitClause":211,"LimitClause":212,"LIMIT":213,"UnsignedNumericLiteral":214,"VARIABLE_REFERENCE":215,"LimitClause_EDIT":216,"OptionalOrderByClause":217,"OrderByClause":218,"ORDER":219,"OrderByColumnList":220,"OrderByClause_EDIT":221,"OrderByColumnList_EDIT":222,"OrderByIdentifier":223,"OrderByIdentifier_EDIT":224,"OptionalAscOrDesc":225,"ASC":226,"DESC":227,"SELECT":228,"OptionalAllOrDistinct":229,"SelectList":230,"TableExpression":231,"SelectList_EDIT":232,"TableExpression_EDIT":233,"DISTINCT":234,"OptionalSelectConditions":235,"OptionalSelectConditions_EDIT":236,"SelectSpecification":237,"SelectSpecification_EDIT":238,"OptionalCorrelationName":239,"*":240,"OptionalCorrelationName_EDIT":241,"OptionalWhereClause":242,"WhereClause_EDIT":243,"WhereClause":244,"Unions":245,"Unions_EDIT":246,"UnionClause":247,"UnionClause_EDIT":248,"UNION":249,"NewStatement":250,"WHERE":251,"SearchCondition":252,"SearchCondition_EDIT":253,".":254,"SignedInteger":255,"TRUE":256,"FALSE":257,"TRUNCATE":258,"OptionalPartitionSpec":259,"UserDefinedFunction":260,"AggregateFunction":261,"OptionalOverClause":262,"AnalyticFunction":263,"OverClause":264,"CastFunction":265,"UserDefinedFunction_EDIT":266,"AggregateFunction_EDIT":267,"OptionalOverClause_EDIT":268,"AnalyticFunction_EDIT":269,"OverClause_EDIT":270,"CastFunction_EDIT":271,"OtherAggregateFunction":272,"CountFunction":273,"SumFunction":274,"OtherAggregateFunction_EDIT":275,"CountFunction_EDIT":276,"SumFunction_EDIT":277,"OtherAggregateFunction_Type":278,"UdfArgumentList":279,"UdfArgumentList_EDIT":280,"AVG":281,"MAX":282,"MIN":283,"STDDEV_POP":284,"STDDEV_SAMP":285,"VAR_POP":286,"VAR_SAMP":287,"VARIANCE":288,"COUNT":289,"SUM":290,"ANALYTIC":291,"ArbitraryFunctionName":292,"IF":293,"CAST":294,"NonParenthesizedValueExpressionPrimary":295,"ColumnOrArbitraryFunctionRef":296,"ArbitraryFunctionRightPart":297,"UnsignedValueSpecification":298,"NonParenthesizedValueExpressionPrimary_EDIT":299,"ArbitraryFunctionRightPart_EDIT":300,"UnsignedValueSpecification_EDIT":301,"ColumnOrArbitraryFunctionRef_EDIT":302,"ArbitraryFunction":303,"ArbitraryFunction_EDIT":304,"OVER":305,"WindowExpression":306,"WindowExpression_EDIT":307,"DataManipulation":308,"UpdateStatement":309,"UpsertStatement":310,"DataManipulation_EDIT":311,"UpdateStatement_EDIT":312,"UpsertValuesStatement_EDIT":313,"UPDATE":314,"TargetTable":315,"SetClauseList":316,"OptionalFromJoinedTable":317,"TargetTable_EDIT":318,"SetClauseList_EDIT":319,"FromJoinedTable_EDIT":320,"TableName":321,"TableName_EDIT":322,"LocalOrSchemaQualifiedName":323,"LocalOrSchemaQualifiedName_EDIT":324,"SetClause":325,"SetClause_EDIT":326,"SetTarget":327,"UpdateSource":328,"UpdateSource_EDIT":329,"USE":330,"SqlSyntax":331,"SqlStatements":332,"EOF":333,"SqlAutocomplete":334,"SqlStatements_EDIT":335,"SqlStatement":336,";":337,"SqlStatement_EDIT":338,"SetSpecification_EDIT":339,"NonReservedKeyword":340,"OPTION":341,"REGULAR_IDENTIFIER":342,"NonStartingToken":343,"!":344,"-":345,"[":346,"]":347,"~":348,"AND":349,"ARITHMETIC_OPERATOR":350,"BACKTICK":351,"BETWEEN":352,"BIGINT":353,"BOOLEAN":354,"CASE":355,"CHAR":356,"CURRENT":357,"DATABASE":358,"DECIMAL":359,"DOUBLE":360,"ELSE":361,"END":362,"EXISTS":363,"FLOAT":364,"FOLLOWING":365,"HDFS_START_QUOTE":366,"IN":367,"INT":368,"INTO":369,"IS":370,"OR":371,"PRECEDING":372,"REGEXP":373,"RLIKE":374,"ROW":375,"ROWS":376,"SCHEMA":377,"SMALLINT":378,"STRING":379,"THEN":380,"TIMESTAMP":381,"TINYINT":382,"UNSIGNED_INTEGER":383,"UNSIGNED_INTEGER_E":384,"VARCHAR":385,"WHEN":386,"PARTIAL_CURSOR":387,"FromOrIn":388,"SingleQuotedValue":389,"SingleQuotedValue_EDIT":390,"PARTIAL_VALUE":391,"DoubleQuotedValue":392,"DoubleQuotedValue_EDIT":393,"QuotedValue_EDIT":394,"OptionalFromDatabase":395,"DatabaseIdentifier":396,"OptionalFromDatabase_EDIT":397,"DatabaseIdentifier_EDIT":398,"CASCADE":399,"OptionalInDatabase":400,"OptionalPartitionSpec_EDIT":401,"PartitionSpec_EDIT":402,"PartitionSpecList":403,"PartitionSpecList_EDIT":404,"RangePartitionSpec":405,"RangePartitionComparisonOperator":406,"RangePartitionSpec_EDIT":407,"ConfigurationName":408,"PartialBacktickedOrAnyCursor":409,"PartialBacktickedIdentifier":410,"PartialBacktickedOrCursor":411,"PartialBacktickedOrPartialCursor":412,"OptionalParenthesizedColumnList":413,"OptionalParenthesizedColumnList_EDIT":414,"ColumnList":415,"ColumnList_EDIT":416,"ParenthesizedSimpleValueList":417,"SimpleValueList":418,"PartitionExpression":419,"PartitionExpression_EDIT":420,"RegularOrBackTickedSchemaQualifiedName":421,"RegularOrBackTickedSchemaQualifiedName_EDIT":422,"BasicIdentifierChain":423,"BasicIdentifierChain_EDIT":424,"DerivedColumnChain":425,"DerivedColumnChain_EDIT":426,"PartialBacktickedIdentifierOrPartialCursor":427,"OptionalTypeLength":428,"OptionalTypePrecision":429,"OptionalNot":430,"TableSubQuery":431,"ValueExpressionList":432,"BETWEEN_AND":433,"LikeRightPart":434,"CaseRightPart":435,"TableSubQuery_EDIT":436,"ValueExpressionInSecondPart_EDIT":437,"LikeRightPart_EDIT":438,"CaseRightPart_EDIT":439,"EndOrError":440,"ValueExpressionList_EDIT":441,"InValueList":442,"+":443,"UnsignedLiteral":444,"UnsignedLiteral_EDIT":445,"GeneralLiteral":446,"GeneralLiteral_EDIT":447,"ExactNumericLiteral":448,"ApproximateNumericLiteral":449,"TruthValue":450,"TablePrimaryOrJoinedTable":451,"TablePrimaryOrJoinedTable_EDIT":452,"JoinedTable":453,"JoinedTable_EDIT":454,"TableOrQueryName":455,"DerivedTable":456,"TableOrQueryName_EDIT":457,"DerivedTable_EDIT":458,"OptionalOnColumn":459,"OptionalOnColumn_EDIT":460,"PushQueryState":461,"PopQueryState":462,"SubQuery":463,"SubQuery_EDIT":464,"QueryExpression":465,"QueryExpression_EDIT":466,"QueryExpressionBody":467,"QueryExpressionBody_EDIT":468,"NonJoinQueryExpression":469,"NonJoinQueryExpression_EDIT":470,"NonJoinQueryTerm":471,"NonJoinQueryTerm_EDIT":472,"NonJoinQueryPrimary":473,"NonJoinQueryPrimary_EDIT":474,"SimpleTable":475,"SimpleTable_EDIT":476,"OptionalPartitionBy":477,"OptionalOrderByAndWindow":478,"PartitionBy_EDIT":479,"OptionalOrderByAndWindow_EDIT":480,"PartitionBy":481,"OptionalWindowSpec":482,"WindowSpec_EDIT":483,"WindowSpec":484,"RowsOrRange":485,"PopLexerState":486,"OptionalCurrentOrPreceding":487,"OptionalAndFollowing":488,"UNBOUNDED":489,"OptionalCurrentOrPreceding_EDIT":490,"OptionalAndFollowing_EDIT":491,"PushHdfsLexerState":492,"HdfsPath":493,"HDFS_PATH":494,"HDFS_END_QUOTE":495,"HdfsPath_EDIT":496,"IntegerOrUnbounded":497,"UpsertValuesStatement":498,"UPSERT":499,"InsertValuesList":500,"OptionalValues":501,"OptionalInsertValuesList":502,"ParenthesizedRowValuesList":503,"CaseWhenThenList":504,"CaseWhenThenList_EDIT":505,"CaseWhenThenListPartTwo":506,"CaseWhenThenListPartTwo_EDIT":507,"$accept":0,"$end":1},
terminals_: {2:"error",4:"ALTER",5:"CURSOR",8:"CREATE",12:"DROP",16:"SET",30:"ALL",32:"=",39:"TABLE",43:"AS",47:"VIEW",50:"COMMENT",54:"SINGLE_QUOTE",55:"DOUBLE_QUOTE",56:"VALUE",63:"ROLE",77:"LIKE",79:"(",81:")",85:",",95:"NOT",96:"NULL",107:"ARRAY",108:"<",109:">",112:"MAP",113:"STRUCT",120:":",125:"PARTITION",126:"BY",129:"RANGE",140:"VALUES",142:"COMPARISON_OPERATOR",154:"PURGE",161:"WITH",169:"FROM",177:"GROUP",188:"HAVING",201:"CROSS",202:"JOIN",203:"FULL",204:"OUTER",205:"INNER",206:"LEFT",207:"SEMI",208:"RIGHT",209:"ON",213:"LIMIT",215:"VARIABLE_REFERENCE",219:"ORDER",226:"ASC",227:"DESC",228:"SELECT",234:"DISTINCT",240:"*",249:"UNION",251:"WHERE",254:".",256:"TRUE",257:"FALSE",258:"TRUNCATE",281:"AVG",282:"MAX",283:"MIN",284:"STDDEV_POP",285:"STDDEV_SAMP",286:"VAR_POP",287:"VAR_SAMP",288:"VARIANCE",289:"COUNT",290:"SUM",291:"ANALYTIC",293:"IF",294:"CAST",305:"OVER",314:"UPDATE",330:"USE",333:"EOF",337:";",339:"SetSpecification_EDIT",341:"OPTION",342:"REGULAR_IDENTIFIER",344:"!",345:"-",346:"[",347:"]",348:"~",349:"AND",350:"ARITHMETIC_OPERATOR",351:"BACKTICK",352:"BETWEEN",353:"BIGINT",354:"BOOLEAN",355:"CASE",356:"CHAR",357:"CURRENT",358:"DATABASE",359:"DECIMAL",360:"DOUBLE",361:"ELSE",362:"END",363:"EXISTS",364:"FLOAT",365:"FOLLOWING",366:"HDFS_START_QUOTE",367:"IN",368:"INT",369:"INTO",370:"IS",371:"OR",372:"PRECEDING",373:"REGEXP",374:"RLIKE",375:"ROW",376:"ROWS",377:"SCHEMA",378:"SMALLINT",379:"STRING",380:"THEN",381:"TIMESTAMP",382:"TINYINT",383:"UNSIGNED_INTEGER",384:"UNSIGNED_INTEGER_E",385:"VARCHAR",386:"WHEN",387:"PARTIAL_CURSOR",391:"PARTIAL_VALUE",399:"CASCADE",433:"BETWEEN_AND",443:"+",489:"UNBOUNDED",494:"HDFS_PATH",495:"HDFS_END_QUOTE",499:"UPSERT"},
productions_: [0,[3,2],[3,1],[3,1],[3,2],[3,1],[3,1],[3,1],[3,2],[3,1],[3,1],[3,1],[3,2],[3,1],[3,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,1],[19,2],[19,4],[19,1],[19,1],[20,2],[6,1],[6,2],[6,2],[6,3],[36,3],[38,3],[38,3],[21,3],[7,1],[7,2],[7,3],[7,3],[7,3],[42,3],[45,3],[45,3],[48,0],[48,1],[49,2],[52,1],[53,2],[53,2],[53,3],[53,3],[22,3],[22,5],[9,4],[9,3],[9,5],[9,4],[9,6],[60,1],[62,1],[23,3],[24,4],[10,4],[10,4],[10,3],[64,3],[65,3],[65,3],[65,3],[65,3],[66,2],[69,2],[69,2],[73,0],[73,1],[73,2],[74,1],[74,2],[74,2],[76,3],[78,3],[80,1],[80,3],[82,1],[82,3],[82,3],[82,5],[82,2],[82,4],[82,4],[82,6],[84,3],[86,3],[86,3],[86,3],[89,0],[89,1],[92,1],[92,2],[91,1],[91,2],[91,2],[91,3],[93,2],[93,1],[93,1],[94,2],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[90,1],[90,1],[90,1],[98,4],[101,3],[104,4],[104,4],[99,6],[102,3],[105,6],[105,4],[105,6],[105,5],[100,4],[103,3],[106,4],[114,1],[114,3],[115,1],[115,2],[115,3],[115,3],[115,5],[116,4],[117,5],[117,4],[117,4],[117,4],[117,3],[117,3],[121,1],[121,3],[122,1],[122,2],[122,3],[122,3],[122,5],[123,2],[123,2],[123,1],[123,1],[111,1],[111,1],[67,0],[67,1],[124,3],[70,2],[70,3],[70,3],[127,3],[128,2],[128,2],[128,3],[128,3],[128,3],[131,3],[133,3],[133,3],[134,1],[134,3],[135,1],[135,3],[135,5],[135,3],[135,5],[136,6],[136,4],[136,4],[137,2],[137,2],[137,3],[137,4],[137,4],[137,5],[137,6],[137,6],[137,3],[137,4],[137,4],[139,1],[139,1],[68,0],[68,3],[71,3],[71,3],[143,0],[25,8],[11,4],[11,9],[11,3],[11,6],[11,7],[11,8],[11,8],[11,8],[144,0],[144,1],[146,3],[145,3],[147,2],[147,4],[148,3],[148,5],[148,5],[148,7],[26,5],[13,3],[13,3],[13,4],[13,5],[13,5],[13,6],[27,3],[28,5],[14,3],[14,4],[14,5],[14,5],[14,6],[153,0],[153,1],[29,4],[15,4],[15,5],[15,3],[15,4],[15,4],[44,3],[44,5],[44,2],[46,4],[46,3],[46,3],[46,1],[46,4],[46,3],[46,2],[46,2],[155,2],[160,2],[162,1],[162,3],[163,1],[163,3],[163,3],[163,5],[164,5],[165,2],[165,5],[165,5],[168,2],[171,2],[171,2],[170,1],[170,3],[172,1],[172,3],[172,3],[172,5],[172,3],[175,0],[175,1],[176,3],[179,3],[179,3],[179,2],[181,0],[181,1],[181,3],[181,3],[182,1],[182,3],[182,3],[182,5],[182,3],[183,1],[183,1],[178,1],[178,3],[180,1],[180,2],[180,3],[180,3],[180,3],[180,4],[180,5],[185,1],[185,2],[185,1],[186,0],[186,1],[187,2],[189,2],[189,2],[190,0],[190,1],[190,1],[191,3],[191,4],[192,1],[192,2],[196,3],[196,1],[196,3],[196,3],[196,3],[200,1],[200,2],[200,2],[200,3],[193,2],[193,2],[193,3],[193,2],[193,1],[193,3],[193,2],[193,3],[193,3],[193,2],[193,3],[193,2],[193,3],[193,3],[193,2],[197,2],[197,3],[197,3],[197,2],[197,3],[197,3],[197,3],[197,3],[197,2],[197,3],[197,3],[197,3],[197,3],[197,2],[195,0],[195,2],[210,1],[210,3],[199,2],[199,2],[211,0],[211,1],[212,2],[212,4],[212,2],[212,4],[216,2],[217,0],[217,1],[218,3],[221,3],[221,2],[220,1],[220,3],[222,1],[222,2],[222,3],[222,4],[222,5],[223,2],[224,2],[224,2],[225,0],[225,1],[225,1],[156,3],[156,4],[158,3],[158,3],[158,4],[158,4],[158,4],[158,5],[158,6],[158,4],[229,0],[229,1],[229,1],[231,2],[233,2],[233,4],[233,3],[230,1],[230,3],[232,1],[232,2],[232,3],[232,3],[232,3],[232,4],[232,3],[232,3],[232,4],[232,4],[232,4],[232,5],[232,5],[237,2],[237,1],[238,2],[238,3],[238,2],[235,5],[236,5],[236,5],[236,5],[236,5],[236,5],[236,6],[236,6],[236,6],[236,6],[236,6],[157,0],[157,1],[159,1],[245,1],[245,2],[246,1],[246,2],[246,2],[246,3],[247,4],[248,3],[248,4],[248,4],[242,0],[242,1],[244,2],[243,2],[243,2],[252,1],[253,1],[31,1],[31,3],[33,1],[33,1],[33,2],[33,1],[33,1],[33,1],[33,1],[34,4],[17,2],[17,4],[17,3],[17,4],[17,5],[17,5],[17,5],[260,2],[260,2],[260,1],[266,1],[266,2],[266,1],[266,2],[266,2],[266,2],[266,1],[261,1],[261,1],[261,1],[267,1],[267,1],[267,1],[272,4],[272,5],[275,5],[275,6],[275,5],[278,1],[278,1],[278,1],[278,1],[278,1],[278,1],[278,1],[278,1],[273,4],[273,3],[273,5],[276,5],[276,6],[276,5],[274,5],[274,3],[277,5],[277,6],[277,5],[263,3],[263,4],[269,4],[269,5],[269,4],[292,1],[292,1],[292,1],[292,1],[265,6],[265,3],[271,6],[271,5],[271,4],[271,6],[271,5],[271,4],[271,6],[271,5],[271,6],[271,5],[295,2],[295,2],[295,1],[295,1],[295,1],[295,1],[299,2],[299,2],[299,1],[299,1],[299,1],[303,2],[303,2],[304,2],[304,2],[297,2],[297,3],[300,3],[300,4],[300,3],[279,1],[279,3],[280,1],[280,3],[280,3],[280,5],[280,3],[280,5],[280,4],[280,3],[280,2],[280,2],[280,4],[262,0],[262,1],[268,1],[264,2],[264,2],[270,2],[308,1],[308,1],[311,1],[311,1],[309,6],[312,6],[312,6],[312,6],[312,6],[312,7],[312,3],[312,2],[312,2],[312,2],[315,1],[318,1],[321,1],[322,1],[316,1],[316,3],[319,1],[319,3],[319,3],[319,5],[325,3],[326,3],[326,2],[326,1],[327,1],[328,1],[329,1],[317,0],[317,2],[320,2],[320,2],[35,2],[18,2],[18,3],[331,3],[334,3],[334,3],[250,0],[332,0],[332,1],[332,4],[335,1],[335,4],[335,4],[335,7],[336,1],[336,1],[336,1],[338,1],[338,2],[338,1],[338,1],[338,1],[338,1],[340,1],[340,1],[340,1],[59,1],[59,1],[59,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[343,1],[118,1],[118,2],[110,1],[110,1],[388,1],[388,1],[57,1],[57,1],[389,3],[389,2],[390,2],[392,3],[392,2],[393,2],[51,1],[51,1],[394,1],[394,1],[395,0],[395,2],[397,2],[151,0],[151,1],[150,0],[150,2],[152,2],[58,0],[58,3],[61,2],[61,3],[400,0],[400,2],[400,2],[259,0],[259,1],[401,1],[37,4],[402,4],[405,5],[407,2],[407,3],[407,4],[407,5],[407,5],[407,5],[406,1],[406,1],[406,1],[406,1],[408,1],[408,1],[409,1],[409,1],[411,1],[411,1],[412,1],[412,1],[410,2],[83,1],[83,1],[413,0],[413,1],[414,1],[130,3],[132,3],[132,3],[415,1],[415,3],[416,3],[416,5],[417,3],[418,1],[418,3],[40,1],[40,3],[40,1],[40,3],[41,1],[41,3],[41,3],[72,1],[72,3],[75,1],[75,3],[75,3],[396,1],[398,1],[403,1],[403,3],[404,1],[404,3],[404,3],[404,5],[419,3],[420,3],[420,3],[420,3],[420,1],[119,1],[119,3],[119,2],[421,1],[421,3],[422,1],[422,3],[323,1],[323,2],[324,1],[324,2],[149,1],[149,3],[184,1],[423,1],[423,3],[424,3],[424,5],[425,1],[425,3],[426,1],[426,3],[426,5],[426,3],[87,1],[427,1],[427,1],[97,1],[97,1],[97,2],[97,2],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,2],[428,0],[428,3],[429,0],[429,3],[429,5],[138,1],[138,2],[138,2],[138,2],[138,2],[138,4],[138,4],[138,4],[138,6],[138,2],[138,3],[138,3],[138,3],[138,3],[138,3],[138,6],[138,6],[138,5],[138,5],[138,6],[138,5],[138,3],[138,3],[138,3],[138,3],[138,3],[138,2],[138,3],[138,2],[138,3],[141,1],[141,3],[141,2],[141,2],[141,2],[141,2],[141,2],[141,2],[141,2],[141,2],[141,3],[141,4],[141,5],[141,4],[141,4],[141,4],[141,6],[141,6],[141,2],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,4],[141,3],[141,6],[141,6],[141,5],[141,5],[141,6],[141,6],[141,6],[141,6],[141,5],[141,4],[141,5],[141,5],[141,5],[141,5],[141,4],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,3],[141,2],[141,3],[141,2],[141,3],[141,2],[141,3],[141,2],[141,3],[141,3],[141,4],[141,3],[141,3],[141,3],[432,1],[432,3],[441,1],[441,3],[441,3],[441,5],[441,3],[441,5],[441,4],[441,3],[441,2],[441,2],[441,4],[442,1],[442,3],[296,1],[296,3],[302,1],[255,1],[255,2],[255,2],[298,1],[301,1],[444,1],[444,1],[445,1],[214,1],[214,1],[448,1],[448,2],[448,3],[448,2],[449,2],[449,3],[449,4],[446,1],[446,1],[446,1],[447,1],[447,1],[450,1],[450,1],[430,0],[430,1],[173,1],[174,1],[451,1],[451,1],[452,1],[452,1],[453,2],[454,2],[454,2],[194,2],[194,2],[198,2],[198,2],[198,2],[455,1],[457,1],[456,1],[458,1],[459,0],[459,2],[460,2],[460,2],[461,0],[462,0],[431,3],[431,4],[436,3],[436,3],[166,2],[167,3],[463,1],[464,1],[465,1],[466,1],[467,1],[468,1],[469,1],[470,1],[471,1],[472,1],[473,1],[474,1],[475,1],[476,1],[239,0],[239,1],[239,1],[239,2],[239,2],[241,1],[241,1],[241,2],[241,2],[241,2],[306,4],[307,4],[307,4],[307,5],[307,7],[477,0],[477,1],[481,3],[479,2],[479,3],[479,3],[478,0],[478,2],[480,1],[480,3],[480,2],[482,0],[482,1],[484,5],[484,5],[483,2],[483,6],[483,5],[483,5],[483,5],[483,4],[486,0],[492,0],[493,3],[496,5],[496,4],[496,3],[496,3],[496,2],[485,1],[485,1],[487,0],[487,2],[487,2],[490,2],[490,2],[488,0],[488,3],[488,3],[491,2],[491,3],[491,3],[497,1],[497,1],[310,1],[498,6],[498,5],[313,2],[313,3],[313,5],[313,5],[313,5],[313,5],[313,6],[501,0],[501,2],[502,0],[502,1],[500,1],[500,3],[503,3],[437,3],[437,3],[437,3],[434,2],[434,2],[434,2],[438,2],[438,2],[438,2],[438,2],[438,2],[438,2],[435,2],[435,4],[439,2],[439,4],[439,4],[439,3],[439,4],[439,3],[439,4],[439,4],[439,3],[439,4],[439,3],[440,1],[440,1],[504,1],[504,2],[505,1],[505,2],[505,3],[505,3],[505,2],[506,4],[507,2],[507,3],[507,4],[507,4],[507,3],[507,3],[507,4],[507,2],[507,3],[507,2],[507,3],[507,3],[507,4],[507,3],[507,4],[507,4],[507,5],[507,4],[507,3]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
/* this == yyval */

var $0 = $$.length - 1;
switch (yystate) {
case 1:

     parser.suggestKeywords(['TABLE', 'VIEW']);
   
break;
case 4: case 8:

     parser.suggestKeywords(['DATABASE', 'ROLE', 'SCHEMA', 'TABLE', 'VIEW']);
   
break;
case 12:

     parser.suggestSetOptions();
   
break;
case 34: case 43: case 238: case 242: case 464: case 588:

     parser.addTablePrimary($$[$0]);
   
break;
case 35: case 233:

     if (parser.yy.result.suggestTables) {
       parser.yy.result.suggestTables.onlyTables = true;
     }
   
break;
case 36:

     parser.suggestTables({ onlyTables: true });
     parser.suggestDatabases({ appendDot: true });
   
break;
case 39: case 264:

     parser.suggestKeywords(['AS']);
   
break;
case 41: case 200: case 209: case 265: case 625: case 1074:

     parser.suggestKeywords(['SELECT']);
   
break;
case 44: case 243:

     if (parser.yy.result.suggestTables) {
       parser.yy.result.suggestTables.onlyViews = true;
     }
   
break;
case 45:

     parser.suggestTables({ onlyViews: true });
     parser.suggestDatabases({ appendDot: true });
   
break;
case 55:

     parser.addNewDatabaseLocation(_$[$0-1], [{ name: $$[$0-1] }]);
   
break;
case 56: case 66:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
   
break;
case 58:

     if (!$$[$0-2]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
     parser.addNewDatabaseLocation(_$[$0], [{ name: $$[$0] }]);
   
break;
case 59:

     parser.addNewDatabaseLocation(_$[$0], [{ name: $$[$0] }]);
   
break;
case 60:

     parser.addNewDatabaseLocation(_$[$0-2], [{ name: $$[$0-2] }]);
   
break;
case 61:

     if (!$$[$0]) {
       parser.suggestKeywords(['COMMENT']);
     }
   
break;
case 72:

     var keywords = [];
     if (!$$[$0-2] && !$$[$0-1]) {
       keywords.push({ value: 'LIKE', weight: 1 });
     } else {
       if (!$$[$0-1]) {
         keywords.push({ value: 'PARTITIONED BY', weight: 12 });
       }
       keywords.push({ value: 'AS', weight: 1 });
     }

     if (keywords.length > 0) {
       parser.suggestKeywords(keywords);
     }
   
break;
case 73:

     parser.addNewTableLocation(_$[$0-1], $$[$0-1], $$[$0]);
     this.$ = $$[$0];
   
break;
case 78:
this.$ = [];
break;
case 80: case 585: case 605: case 821: case 1154:

     parser.suggestTables();
     parser.suggestDatabases({ appendDot: true });
   
break;
case 82: case 218: case 220: case 246: case 416: case 549: case 552: case 752: case 755: case 843: case 896: case 1071:
this.$ = $$[$0-1];
break;
case 84: case 257:
this.$ = [$$[$0]];
break;
case 85:
this.$ = $$[$0-2].concat($$[$0]);
break;
case 90: case 92:

     parser.checkForKeywords($$[$0-1]);
   
break;
case 91: case 93:

     parser.checkForKeywords($$[$0-3]);
   
break;
case 94:

     this.$ = $$[$0-2];
     this.$.type = $$[$0-1];
     var keywords = [];
     if (!$$[$0]['comment']) {
       keywords.push('COMMENT');
     }
     if (keywords.length > 0) {
       this.$.suggestKeywords = keywords;
     }
   
break;
case 95: case 122: case 128: case 129: case 142: case 145: case 154: case 156:

     parser.suggestKeywords(parser.getColumnDataTypeKeywords());
   
break;
case 98:
this.$ = {};
break;
case 100:

     this.$ = {};
     this.$[$$[$0]] = true;
   
break;
case 101:

     $$[$0-1][$$[$0]] = true;
   
break;
case 106: case 107:
this.$ = 'null';
break;
case 108:
this.$ = 'comment';
break;
case 109:

     parser.suggestKeywords(['NULL']);
   
break;
case 127:

     parser.suggestKeywords(parser.getTypeKeywords());
   
break;
case 141: case 144:

     parser.suggestKeywords(['COMMENT']);
   
break;
case 163: case 1109:

     parser.suggestKeywords(['BY']);
   
break;
case 164:

     parser.suggestKeywords(['RANGE']);
   
break;
case 173: case 178: case 179:

     parser.suggestKeywords(['PARTITION']);
   
break;
case 185:

     parser.suggestKeywords(['VALUE', 'VALUES']);
   
break;
case 186:

     if ($$[$0].endsWithLessThanOrEqual) {
      parser.suggestKeywords(['VALUES']);
     }
   
break;
case 187: case 190: case 193:

     parser.suggestKeywords(['<', '<=']);
   
break;
case 188: case 784: case 787:

     parser.suggestKeywords(['VALUES']);
   
break;
case 191: case 194:

     parser.suggestFunctions();
   
break;
case 202:

     parser.commitLocations();
   
break;
case 204:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
     parser.suggestDatabases({ appendDot: true });
   
break;
case 205:

     if (!$$[$0-6]) {
       parser.suggestKeywords(['IF NOT EXISTS']);
     }
   
break;
case 208:

     var keywords = [{value: 'AS', weight: 1 }];
     if (!$$[$0-1]) {
       keywords.push({ value: 'COMMENT', weight: 3 });
     }
     parser.suggestKeywords(keywords);
   
break;
case 215:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['COMMENT']);
     }
   
break;
case 219: case 221:
this.$ = $$[$0-3];
break;
case 225:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
     parser.suggestDatabases();
   
break;
case 226:

     parser.suggestKeywords(['CASCADE']);
   
break;
case 228:

     if (!$$[$0-3]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 230: case 469:

     parser.addTablePrimary($$[$0-1]);
   
break;
case 232:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
     parser.suggestTables({ onlyTables: true });
     parser.suggestDatabases({
       appendDot: true
     });
   
break;
case 235:

     parser.addTablePrimary($$[$0-2]);
     if (!$$[$0-1]) {
       parser.suggestKeywords(['PURGE']);
     }
   
break;
case 239:

     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
     parser.suggestTables({ onlyViews: true });
     parser.suggestDatabases({ appendDot: true });
   
break;
case 240:

     parser.addTablePrimary($$[$0]);
     if (!$$[$0-2]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 245: case 418:
this.$ = $$[$0-2];
break;
case 247:

     parser.addCommonTableExpressions($$[$0-3]);
   
break;
case 248: case 249: case 260:

     parser.addCommonTableExpressions($$[$0-2]);
   
break;
case 255: case 271: case 295: case 371: case 375: case 413: case 423: case 450: case 604: case 996: case 998: case 1053: case 1108: case 1200:
this.$ = $$[$0];
break;
case 258:
this.$ = $$[$0-2].concat([$$[$0]]);
break;
case 262:

     parser.addCommonTableExpressions($$[$0-4]);
   
break;
case 263:

     parser.addCteAliasLocation(_$[$0-4], $$[$0-4]);
     $$[$0-1].alias = $$[$0-4];
     this.$ = $$[$0-1];
   
break;
case 267:

     this.$ = { tableReferenceList : $$[$0] }
   
break;
case 268: case 276:

       parser.suggestTables();
       parser.suggestDatabases({ appendDot: true });
   
break;
case 279:

     this.$ = { valueExpression: $$[$0] };
   
break;
case 280: case 382:

     parser.suggestSelectListAliases();
   
break;
case 281:

     parser.valueExpressionSuggest();
     parser.suggestSelectListAliases();
     parser.suggestGroupBys({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 282:

     parser.suggestKeywords(['BY']);
     parser.suggestGroupBys({ prefix: 'BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 292: case 599: case 809: case 812: case 813: case 840: case 841: case 862: case 865:

     parser.suggestColumns();
   
break;
case 297: case 298: case 304: case 305: case 839: case 1067: case 1110:

     parser.valueExpressionSuggest();
   
break;
case 309:

     parser.valueExpressionSuggest();
     parser.suggestAggregateFunctions();
     parser.suggestSelectListAliases(true);
   
break;
case 310:

     parser.suggestAggregateFunctions();
     parser.suggestSelectListAliases(true);
   
break;
case 314:

     if ($$[$0] && $$[$0].valueExpression) {
       this.$ = $$[$0].valueExpression;
     } else {
       this.$ = {};
     }
     this.$.joinType = $$[$0-2];
     if ($$[$0].noJoinCondition) {
       this.$.suggestJoinConditions = { prependOn: true, tablePrimaries: parser.yy.latestTablePrimaries.concat() }
     }
     if ($$[$0].suggestKeywords) {
       this.$.suggestKeywords = $$[$0].suggestKeywords;
     }
     if (parser.yy.latestTablePrimaries.length > 0) {
        parser.yy.latestTablePrimaries[parser.yy.latestTablePrimaries.length - 1].join = true;
     }
   
break;
case 315:

     if ($$[$0] && $$[$0].valueExpression) {
       this.$ = $$[$0].valueExpression;
     } else {
       this.$ = {};
     }
     this.$.joinType = $$[$0-3];
     if ($$[$0].noJoinCondition) {
       this.$.suggestJoinConditions = { prependOn: true, tablePrimaries: parser.yy.latestTablePrimaries.concat() }
     }
     if ($$[$0].suggestKeywords) {
       this.$.suggestKeywords = $$[$0].suggestKeywords;
     }
     if (parser.yy.latestTablePrimaries.length > 0) {
       parser.yy.latestTablePrimaries[parser.yy.latestTablePrimaries.length - 1].join = true;
     }
   
break;
case 316:
this.$ = { joinType: $$[$0] };
break;
case 317:
this.$ = { joinType: $$[$0-1] };
break;
case 318:

     if ($$[$0-2].suggestKeywords) {
       parser.suggestKeywords($$[$0-2].suggestKeywords);
     }
   
break;
case 319:

     if ($$[$0].suggestKeywords) {
       parser.suggestKeywords($$[$0].suggestKeywords);
     }
   
break;
case 322:

     if (parser.yy.latestTablePrimaries.length > 0) {
       var idx = parser.yy.latestTablePrimaries.length - 1;
       var tables = [];
       do {
         var tablePrimary = parser.yy.latestTablePrimaries[idx];
         if (!tablePrimary.subQueryAlias) {
           tables.unshift(tablePrimary.alias ? { identifierChain: tablePrimary.identifierChain, alias: tablePrimary.alias } : { identifierChain: tablePrimary.identifierChain })
         }
         idx--;
       } while (idx >= 0 && tablePrimary.join && !tablePrimary.subQueryAlias)

       if (tables.length > 0) {
         parser.suggestJoins({
           prependJoin: false,
           joinType: $$[$0-2],
           tables: tables
         })
       }
     }
     parser.suggestTables();
     parser.suggestDatabases({
       appendDot: true
     });
   
break;
case 327:
this.$ = 'CROSS JOIN';
break;
case 328:
this.$ = 'FULL JOIN';
break;
case 329:
this.$ = 'FULL OUTER JOIN';
break;
case 330:
this.$ = 'INNER JOIN';
break;
case 331:
this.$ = 'JOIN';
break;
case 332:
this.$ = 'LEFT INNER JOIN';
break;
case 333:
this.$ = 'LEFT JOIN';
break;
case 334:
this.$ = 'LEFT OUTER JOIN';
break;
case 335:
this.$ = 'LEFT SEMI JOIN';
break;
case 336:
this.$ = 'OUTER JOIN';
break;
case 337: case 339:
this.$ = 'RIGHT OUTER JOIN';
break;
case 338:
this.$ = 'RIGHT JOIN';
break;
case 340:
this.$ = 'RIGHT SEMI JOIN';
break;
case 341:
this.$ = 'SEMI JOIN';
break;
case 342: case 344: case 345: case 347: case 348: case 349: case 350: case 352: case 353: case 354: case 355:
this.$ = { suggestKeywords: ['JOIN'] };
break;
case 343: case 346: case 351:
this.$ = { suggestKeywords: ['OUTER'] };
break;
case 356:
this.$ = { noJoinCondition: true, suggestKeywords: ['ON'] };
break;
case 357:
this.$ = { valueExpression: $$[$0] };
break;
case 361:

     parser.valueExpressionSuggest();
     parser.suggestJoinConditions({ prependOn: false });
   
break;
case 368:

     parser.suggestKeywords([{ value: '10', weight: 10000 }, { value: '100', weight: 10000 }, { value: '1000', weight: 10000 }, { value: '5000', weight: 10000 }, { value: '10000', weight: 10000 }])
   
break;
case 372:

     if ($$[$0].emptyOrderBy) {
       parser.suggestOrderBys({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
   
break;
case 373:

     parser.suggestKeywords(['BY']);
     parser.suggestOrderBys({ prefix: 'BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 377:

     this.$ = { emptyOrderBy: false }
     parser.valueExpressionSuggest();
     parser.suggestAnalyticFunctions();
     parser.suggestSelectListAliases();
   
break;
case 378: case 379: case 380:
this.$ = { emptyOrderBy: false };
break;
case 381:
this.$ = parser.mergeSuggestKeywords($$[$0]);
break;
case 383:

     this.$ = { emptyOrderBy: true }
     parser.valueExpressionSuggest();
     parser.suggestAnalyticFunctions();
     parser.suggestSelectListAliases();
   
break;
case 384:
this.$ = { suggestKeywords: ['ASC', 'DESC'] };;
break;
case 387:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2]), _$[$0]);
     this.$ = { selectList: $$[$0] };
   
break;
case 388:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
     this.$ = { selectList: $$[$0-1], tableExpression: $$[$0] }
   
break;
case 389:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2]), _$[$0]);
     if ($$[$0].cursorAtStart) {
       var keywords = parser.getSelectListKeywords();
       if (!$$[$0-1]) {
         keywords = keywords.concat(parser.SELECT_FIRST_OPTIONAL_KEYWORDS);
       }
       parser.suggestKeywords(keywords);
     } else {
       parser.checkForSelectListKeywords($$[$0]);
     }
     if ($$[$0].suggestFunctions) {
       parser.suggestFunctions();
     }
     if ($$[$0].suggestColumns) {
       parser.suggestColumns({ identifierChain: [], source: 'select' });
     }
     if ($$[$0].suggestTables) {
       parser.suggestTables({ prependQuestionMark: true, prependFrom: true });
     }
     if ($$[$0].suggestDatabases) {
       parser.suggestDatabases({ prependQuestionMark: true, prependFrom: true, appendDot: true });
     }
     if ($$[$0].suggestAggregateFunctions && (!$$[$0-1] || $$[$0-1] === 'ALL')) {
       parser.suggestAggregateFunctions();
       parser.suggestAnalyticFunctions();
     }
   
break;
case 390:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2]), _$[$0], true);
     var keywords = parser.getSelectListKeywords();
     if (!$$[$0-1] || $$[$0-1] === 'ALL') {
       parser.suggestAggregateFunctions();
       parser.suggestAnalyticFunctions();
     }
     if (!$$[$0-1]) {
       keywords = keywords.concat(parser.SELECT_FIRST_OPTIONAL_KEYWORDS);
     }
     parser.suggestKeywords(keywords);
     parser.suggestFunctions();
     parser.suggestColumns({ identifierChain: [], source: 'select' });
     parser.suggestTables({ prependQuestionMark: true, prependFrom: true });
     parser.suggestDatabases({ prependQuestionMark: true, prependFrom: true, appendDot: true });
   
break;
case 391:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
   
break;
case 392:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
     parser.selectListNoTableSuggest($$[$0-1], $$[$0-2]);
     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'select';
     }
   
break;
case 393:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1], true);
     var keywords = parser.getSelectListKeywords();
     if (!$$[$0-2] || $$[$0-2] === 'ALL') {
       parser.suggestAggregateFunctions();
       parser.suggestAnalyticFunctions();
     }
     if (!$$[$0-2]) {
       keywords = keywords.concat(parser.SELECT_FIRST_OPTIONAL_KEYWORDS);
     }
     parser.suggestKeywords(keywords);
     parser.suggestFunctions();
     parser.suggestColumns({ identifierChain: [], source: 'select' });
     parser.suggestTables({ prependQuestionMark: true, prependFrom: true });
     parser.suggestDatabases({ prependQuestionMark: true, prependFrom: true, appendDot: true });
   
break;
case 394:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-3], _$[$0-3], $$[$0-4], _$[$0-4]), _$[$0-2]);
     parser.checkForSelectListKeywords($$[$0-2]);
   
break;
case 395:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-4], _$[$0-4], $$[$0-5], _$[$0-5]), _$[$0-3]);
     parser.checkForSelectListKeywords($$[$0-3]);
   
break;
case 396:

     parser.addClauseLocation('selectList', parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3]), _$[$0-1]);
     parser.checkForSelectListKeywords($$[$0-1]);
     var keywords = ['FROM'];
     if (parser.yy.result.suggestKeywords) {
       keywords = parser.yy.result.suggestKeywords.concat(keywords);
     }
     parser.suggestKeywords(keywords);
     parser.suggestTables({ prependFrom: true });
     parser.suggestDatabases({ prependFrom: true, appendDot: true });
   
break;
case 400: case 401:

     parser.addClauseLocation('whereClause', _$[$0-1], $$[$0].whereClauseLocation);
     parser.addClauseLocation('limitClause', $$[$0].limitClausePreceding || _$[$0-1], $$[$0].limitClauseLocation);
   
break;
case 402:

     var keywords = [];

     parser.addClauseLocation('whereClause', _$[$0-3], $$[$0-1].whereClauseLocation);
     parser.addClauseLocation('limitClause', $$[$0-2].limitClausePreceding || _$[$0-3], $$[$0-2].limitClauseLocation);

     if ($$[$0-3]) {
       if (typeof $$[$0-3].tableReferenceList.hasJoinCondition !== 'undefined' && !$$[$0-3].tableReferenceList.hasJoinCondition) {
         keywords.push({ value: 'ON', weight: 3 });
       }
       if ($$[$0-3].suggestKeywords) {
         keywords = parser.createWeightedKeywords($$[$0-3].suggestKeywords, 3);
       }
       if ($$[$0-3].tableReferenceList.suggestJoinConditions) {
         parser.suggestJoinConditions($$[$0-3].tableReferenceList.suggestJoinConditions);
       }
       if ($$[$0-3].tableReferenceList.suggestJoins) {
         parser.suggestJoins($$[$0-3].tableReferenceList.suggestJoins);
       }
       if ($$[$0-3].tableReferenceList.suggestKeywords) {
         keywords = keywords.concat(parser.createWeightedKeywords($$[$0-3].tableReferenceList.suggestKeywords, 3));
       }

       // Lower the weights for 'TABLESAMPLE'
       keywords.forEach(function (keyword) {
         if (keyword.value === 'TABLESAMPLE') {
           keyword.weight = 1.1;
         }
       });

       if ($$[$0-3].tableReferenceList.types) {
         var veKeywords = parser.getValueExpressionKeywords($$[$0-3].tableReferenceList);
         keywords = keywords.concat(veKeywords.suggestKeywords);
         if (veKeywords.suggestColRefKeywords) {
           parser.suggestColRefKeywords(veKeywords.suggestColRefKeywords);
           parser.addColRefIfExists($$[$0-3].tableReferenceList);
         }
       }
     }

     if ($$[$0-1].empty && $$[$0] && $$[$0].joinType.toUpperCase() === 'JOIN') {
       keywords = keywords.concat(['FULL', 'FULL OUTER', 'INNER', 'LEFT', 'LEFT OUTER', 'RIGHT', 'RIGHT OUTER']);
       parser.suggestKeywords(keywords);
       return;
     }

     if ($$[$0-1].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-1].suggestKeywords, 2));
     }

     if ($$[$0-1].suggestFilters) {
       parser.suggestFilters($$[$0-1].suggestFilters);
     }
     if ($$[$0-1].suggestGroupBys) {
       parser.suggestGroupBys($$[$0-1].suggestGroupBys);
     }
     if ($$[$0-1].suggestOrderBys) {
       parser.suggestOrderBys($$[$0-1].suggestOrderBys);
     }

     if ($$[$0-1].empty) {
       keywords.push({ value: 'UNION', weight: 2.11 });
     }

     keywords = keywords.concat([
       { value: 'FULL JOIN', weight: 1 },
       { value: 'FULL OUTER JOIN', weight: 1 },
       { value: 'INNER JOIN', weight: 1 },
       { value: 'JOIN', weight: 1 },
       { value: 'LEFT JOIN', weight: 1 },
       { value: 'LEFT OUTER JOIN', weight: 1 },
       { value: 'RIGHT JOIN', weight: 1 },
       { value: 'RIGHT OUTER JOIN', weight: 1 }
     ]);
     parser.suggestKeywords(keywords);
  
break;
case 403:

     // A couple of things are going on here:
     // - If there are no SelectConditions (WHERE, GROUP BY, etc.) we should suggest complete join options
     // - If there's an OptionalJoin at the end, i.e. 'SELECT * FROM foo | JOIN ...' we should suggest
     //   different join types
     // - The FromClause could end with a valueExpression, in which case we should suggest keywords like '='
     //   or 'AND' based on type

     if (!$$[$0-1]) {
       parser.addClauseLocation('whereClause', _$[$0-2]);
       parser.addClauseLocation('limitClause', _$[$0-2]);
       return;
     }
     parser.addClauseLocation('whereClause', _$[$0-2], $$[$0-1].whereClauseLocation);
     parser.addClauseLocation('limitClause', $$[$0-1].limitClausePreceding || _$[$0-2], $$[$0-1].limitClauseLocation);
     var keywords = [];

     if ($$[$0-1].suggestColRefKeywords) {
       parser.suggestColRefKeywords($$[$0-1].suggestColRefKeywords);
       parser.addColRefIfExists($$[$0-1]);
     }

     if ($$[$0-1].suggestKeywords && $$[$0-1].suggestKeywords.length) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-1].suggestKeywords, 2));
     }

     if ($$[$0-1].cursorAtEnd) {
       keywords.push({ value: 'UNION', weight: 2.11 });
     }
     parser.suggestKeywords(keywords);
   
break;
case 404:
this.$ = [ $$[$0] ];
break;
case 405:

     $$[$0-2].push($$[$0]);
   
break;
case 407: case 408:

     this.$ = { cursorAtStart : true, suggestFunctions: true, suggestColumns: true, suggestAggregateFunctions: true };
   
break;
case 410:

     parser.checkForSelectListKeywords($$[$0-2]);
   
break;
case 411:

     parser.checkForSelectListKeywords($$[$0-3]);
   
break;
case 412:

     this.$ = { suggestKeywords: parser.getSelectListKeywords(), suggestTables: true, suggestDatabases: true, suggestFunctions: true, suggestColumns: true, suggestAggregateFunctions: true };
   
break;
case 414: case 415: case 417:

     this.$ = { suggestKeywords: parser.getSelectListKeywords(), suggestFunctions: true, suggestColumns: true, suggestAggregateFunctions: true,  };
   
break;
case 419:

     if ($$[$0]) {
       parser.addColumnAliasLocation($$[$0].location, $$[$0].alias, _$[$0-1]);
       this.$ = { valueExpression: $$[$0-1], alias: $$[$0].alias };
       if (!parser.yy.selectListAliases) {
         parser.yy.selectListAliases = [];
       }
       parser.yy.selectListAliases.push($$[$0-1].function && $$[$0-1].types && $$[$0-1].types.length && $$[$0-1].types[0] === 'UDFREF' ? { name: $$[$0].alias, udfRef: $$[$0-1].function, types: $$[$0-1].types } : { name: $$[$0].alias, types: $$[$0-1].types || ['T'] });
     } else {
       this.$ = { valueExpression: $$[$0-1] }
     }
   
break;
case 420:

     parser.addAsteriskLocation(_$[$0], [{ asterisk: true }]);
     this.$ = { asterisk: true }
   
break;
case 421:

     if ($$[$0]) {
       parser.addColumnAliasLocation($$[$0].location, $$[$0].alias, _$[$0-1]);
     }
   
break;
case 422:

     parser.suggestFunctions();
     parser.suggestColumns();
     parser.addColumnAliasLocation(_$[$0], $$[$0], _$[$0-2]);
     this.$ = { suggestAggregateFunctions: true };
   
break;
case 424:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]],
       [{ value: 'WHERE', weight: 7 }, { value: 'GROUP BY', weight: 6 }, { value: 'HAVING', weight: 5 }, { value: 'ORDER BY', weight: 4 }, { value: 'LIMIT', weight: 3 }],
       [true, true, true, true, true]);

     if (keywords.length > 0) {
       this.$ = { suggestKeywords: keywords, empty: !$$[$0-4] && !$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0] };
     } else {
       this.$ = {};
     }

     this.$.whereClauseLocation = $$[$0-4] ? _$[$0-4] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3], $$[$0-4], _$[$0-4]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;

     if (!$$[$0-4] && !$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0]) {
       this.$.suggestFilters = { prefix: 'WHERE', tablePrimaries: parser.yy.latestTablePrimaries.concat() };
     }
     if (!$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0]) {
       this.$.suggestGroupBys = { prefix: 'GROUP BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() };
     }
     if (!$$[$0-1] && !$$[$0]) {
       this.$.suggestOrderBys = { prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() };
     }
   
break;
case 425:

     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'where';
     }
   
break;
case 426:

     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'group by';
     }
   
break;
case 428:

     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.source = 'order by';
     }
   
break;
case 430:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-3], $$[$0-2], $$[$0-1], $$[$0]],
       [{ value: 'GROUP BY', weight: 8 }, { value: 'HAVING', weight: 7 }, { value: 'ORDER BY', weight: 5 }, { value: 'LIMIT', weight: 3 }],
       [true, true, true, true]);
     if ($$[$0-5].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-5].suggestKeywords, 1));
     }
     this.$ = parser.getValueExpressionKeywords($$[$0-5], keywords);
     this.$.cursorAtEnd = !$$[$0-3] && !$$[$0-2] && !$$[$0-1] && !$$[$0];
     if ($$[$0-5].columnReference) {
       this.$.columnReference = $$[$0-5].columnReference;
     }
     if (!$$[$0-3]) {
       parser.suggestGroupBys({ prefix: 'GROUP BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     if (!$$[$0-3] && !$$[$0-2] && !$$[$0-1]) {
       parser.suggestOrderBys({ prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3], $$[$0-5], _$[$0-5]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 431:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-2], $$[$0-1], $$[$0]],
       [{ value: 'HAVING', weight: 7 }, { value: 'ORDER BY', weight: 5 }, { value: 'LIMIT', weight: 3 }],
       [true, true, true]);
     if ($$[$0-4].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-4].suggestKeywords, 8));
     }
     if ($$[$0-4].valueExpression) {
       this.$ = parser.getValueExpressionKeywords($$[$0-4].valueExpression, keywords);
       if ($$[$0-4].valueExpression.columnReference) {
         this.$.columnReference = $$[$0-4].valueExpression.columnReference;
       }
     } else {
       this.$ = { suggestKeywords: keywords };
     }
     this.$.cursorAtEnd = !$$[$0-2] && !$$[$0-1] && !$$[$0];
     if (!$$[$0-2] && !$$[$0-1]) {
       parser.suggestOrderBys({ prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-2], _$[$0-2], $$[$0-4], _$[$0-4]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 432:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0-1], $$[$0]],
       [{ value: 'ORDER BY', weight: 5 }, { value: 'LIMIT', weight: 3 }],
       [true, true]);
     this.$ = { suggestKeywords: keywords, cursorAtEnd: !$$[$0-1] && !$$[$0] };
     if (!$$[$0-1]) {
       parser.suggestOrderBys({ prefix: 'ORDER BY', tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-1], _$[$0-1], $$[$0-3], _$[$0-3]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 433:

     var keywords = parser.getKeywordsForOptionalsLR(
       [$$[$0]],
       [{ value: 'LIMIT', weight: 3 }],
       [true]);
     if ($$[$0-2].suggestKeywords) {
       keywords = keywords.concat(parser.createWeightedKeywords($$[$0-2].suggestKeywords, 4));
     }
     this.$ = { suggestKeywords: keywords, cursorAtEnd: !$$[$0] };
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-2], _$[$0-2]);
     this.$.limitClauseLocation = $$[$0] ? _$[$0] : undefined;
   
break;
case 434:

     this.$ = { suggestKeywords: [], cursorAtEnd: true };
     this.$.whereClauseLocation = $$[$0-5] ? _$[$0-5] : undefined;
     this.$.limitClausePreceding = parser.firstDefined($$[$0-2], _$[$0-2], $$[$0-3], _$[$0-3], $$[$0-4], _$[$0-4], $$[$0-5], _$[$0-5]);
     this.$.limitClauseLocation = _$[$0-1];
   
break;
case 445:

     parser.suggestKeywords(['ALL', 'DISTINCT', 'SELECT']);
   
break;
case 446:

     parser.suggestKeywords(['ALL', 'DISTINCT']);
   
break;
case 451:

     if ($$[$0].suggestFilters) {
       parser.suggestFilters({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
     }
   
break;
case 452:

     parser.suggestFunctions();
     parser.suggestColumns();
     parser.suggestKeywords(['EXISTS', 'NOT EXISTS']);
     parser.suggestFilters({ tablePrimaries: parser.yy.latestTablePrimaries.concat() });
   
break;
case 465:

     parser.suggestKeywords(['TABLE']);
   
break;
case 466:

     parser.suggestTables();
     parser.suggestDatabases({ appendDot: true });
     if (!$$[$0-1]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 470:

     parser.addTablePrimary($$[$0-1]);
     if (!$$[$0-2]) {
       parser.suggestKeywords(['IF EXISTS']);
     }
   
break;
case 472:

     if (!$$[$0]) {
       $$[$0-1].suggestKeywords = ['OVER'];
     }
   
break;
case 479:

     parser.suggestKeywords(['OVER']);
   
break;
case 488:

     this.$ = { function: $$[$0-3], types: ['UDFREF'] };
   
break;
case 489: case 507:

     parser.addFunctionArgumentLocations($$[$0-4], $$[$0-1].expressions);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 490:

     parser.valueExpressionSuggest();
     var keywords = parser.getSelectListKeywords(true);
     if (!$$[$0-2]) {
       if ($$[$0-4].toLowerCase() === 'group_concat') {
         keywords.push('ALL');
       } else {
         keywords.push('DISTINCT');
       }
     }
     if (parser.yy.result.suggestKeywords) {
       keywords = parser.yy.result.suggestKeywords.concat(keywords);
     }
     parser.suggestKeywords(keywords);
     parser.applyArgumentTypesToSuggestions($$[$0-4], 1);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 491: case 505:

     parser.suggestValueExpressionKeywords($$[$0-2].expressions[$$[$0-2].expressions.length - 1].expression);
     this.$ = { function: $$[$0-5], types: ['UDFREF'] };
   
break;
case 492:

     if ($$[$0-1].cursorAtStart) {
       var keywords = parser.getSelectListKeywords(true);
       if (!$$[$0-2]) {
         if ($$[$0-4].toLowerCase() === 'group_concat') {
           keywords.push('ALL');
         } else {
           keywords.push('DISTINCT');
         }
       }
       if (parser.yy.result.suggestKeywords) {
         keywords = parser.yy.result.suggestKeywords.concat(keywords);
       }
       parser.suggestKeywords(keywords);
     }
     if (parser.yy.result.suggestFunctions && !parser.yy.result.suggestFunctions.types) {
       parser.applyArgumentTypesToSuggestions($$[$0-4], $$[$0-1].activePosition);
     }
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 501:

     parser.addFunctionArgumentLocations($$[$0-3], [{
       expression: { text: $$[$0-1] },
       location: _$[$0-1]
     }]);
     this.$ = { function: $$[$0-3], types: ['UDFREF'] }
   
break;
case 502: case 508:

     this.$ = { function: $$[$0-2], types: ['UDFREF'] }
   
break;
case 503:

     parser.addFunctionArgumentLocations($$[$0-4], $$[$0-1].expressions);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] }
   
break;
case 504:

     parser.valueExpressionSuggest();
     var keywords = parser.getSelectListKeywords();
     if (!$$[$0-2]) {
       keywords.push('DISTINCT');
       if (parser.yy.result.suggestKeywords) {
         keywords = parser.yy.result.suggestKeywords.concat(keywords);
       }
     }
     parser.suggestKeywords(keywords);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 506:

     if ($$[$0-1].cursorAtStart) {
       var keywords = parser.getSelectListKeywords();
       if (!$$[$0-2]) {
         keywords.push('DISTINCT');
       }
       parser.suggestKeywords(keywords);
     }
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 509:

     parser.valueExpressionSuggest();
     parser.applyArgumentTypesToSuggestions($$[$0-4], 1);
     var keywords = parser.getSelectListKeywords(true);
     if (!$$[$0-2]) {
       keywords.push('DISTINCT');
     }
     if (parser.yy.result.suggestKeywords) {
       keywords = parser.yy.result.suggestKeywords.concat(keywords);
     }
     parser.suggestKeywords(keywords);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 510:

     parser.suggestValueExpressionKeywords($$[$0-2]);
     this.$ = { function: $$[$0-5], types: ['UDFREF'] };
   
break;
case 511:

     if (parser.yy.result.suggestFunctions && !parser.yy.result.suggestFunctions.types) {
       parser.applyArgumentTypesToSuggestions($$[$0-4], 1);
     }
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 512:

    this.$ = { function: $$[$0-2], types: ['UDFREF'] }
  
break;
case 513:

     parser.addFunctionArgumentLocations($$[$0-3], $$[$0-1].expressions);
     this.$ = {
       function: $$[$0-3],
       expression: $$[$0-1].expressions[$$[$0-1].expressions.length - 1].expression,
       types: ['UDFREF']
     }
   
break;
case 514:

     parser.valueExpressionSuggest();
     parser.applyArgumentTypesToSuggestions($$[$0-3], 1);
     this.$ = { function: $$[$0-3], types: ['UDFREF'] };
   
break;
case 515:

     parser.addFunctionArgumentLocations($$[$0-4], $$[$0-2].expressions);
     parser.suggestValueExpressionKeywords($$[$0-2].expressions[$$[$0-2].expressions.length - 1].expression);
     this.$ = { function: $$[$0-4], types: ['UDFREF'] };
   
break;
case 516:

     parser.addFunctionArgumentLocations($$[$0-3], $$[$0-1].expressions);
     parser.applyArgumentTypesToSuggestions($$[$0-3], $$[$0-1].activePosition);
     this.$ = { function: $$[$0-3], types: ['UDFREF'] };
   
break;
case 521:

     var expression = $$[$0-3];
     parser.extractExpressionText(expression, $$[$0-3], $$[$0-2], $$[$0-1]);
     parser.addFunctionArgumentLocations($$[$0-5], [{
       expression: expression,
       location: {
         first_line: _$[$0-3].first_line,
         last_line: _$[$0-1].last_line,
         first_column: _$[$0-3].first_column,
         last_column: _$[$0-1].last_column
       }
     }]);
     this.$ = { types: [ $$[$0-1].toUpperCase() ] }
   
break;
case 522: case 527: case 528: case 1002:
this.$ = { types: [ 'T' ] };
break;
case 523:

     parser.valueExpressionSuggest();
     this.$ = { types: [ $$[$0-1].toUpperCase() ] };
   
break;
case 524: case 525:

     parser.valueExpressionSuggest();
     this.$ = { types: [ 'T' ] };
   
break;
case 526:
this.$ = { types: [ $$[$0-1].toUpperCase() ] };
break;
case 529:

     parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'AS', weight: 2 }]);
     this.$ =  { types: [ $$[$0-1].toUpperCase() ] };
   
break;
case 530:

     parser.suggestValueExpressionKeywords($$[$0-2], [{ value: 'AS', weight: 2 }]);
     this.$ = { types: [ 'T' ] };
   
break;
case 531: case 532:

     parser.suggestKeywords(parser.getTypeKeywords());
     this.$ = { types: [ 'T' ] };
   
break;
case 533:

     // We need to handle arbitrary UDFs here instead of inside UserDefinedFunction or there will be a conflict
     // with columnReference for functions like: db.udf(foo)
     var fn = $$[$0-1].chain[$$[$0-1].chain.length - 1].name.toLowerCase();
     parser.addFunctionArgumentLocations(fn, $$[$0].expressions, $$[$0-1].chain);
     if ($$[$0-1].lastLoc && $$[$0-1].lastLoc.location) {
       $$[$0-1].lastLoc.type = 'function';
       $$[$0-1].lastLoc.function = fn;
       $$[$0-1].lastLoc.location = {
         first_line: $$[$0-1].lastLoc.location.first_line,
         last_line: $$[$0-1].lastLoc.location.last_line,
         first_column: $$[$0-1].lastLoc.location.first_column,
         last_column: $$[$0-1].lastLoc.location.last_column - 1
       }
       if ($$[$0-1].lastLoc !== $$[$0-1].firstLoc) {
          $$[$0-1].firstLoc.type = 'database';
       } else {
         delete $$[$0-1].lastLoc.identifierChain;
       }
     }
     if ($$[$0].expressions && $$[$0].expressions.length) {
       this.$ = { function: fn, expression: $$[$0].expressions[$$[$0].expressions.length - 1].expression, types: ['UDFREF'] }
     } else {
       this.$ = { function: fn, types: ['UDFREF'] }
     }
   
break;
case 534:

    parser.addFunctionLocation(_$[$0-1], $$[$0-1]);
    if ($$[$0].expressions && $$[$0].expressions.length) {
      this.$ = { function: $$[$0-1], expression: $$[$0].expressions[$$[$0].expressions.length - 1].expression, types: ['UDFREF'] }
    } else {
      this.$ = { function: $$[$0-1], types: ['UDFREF'] }
    }
  
break;
case 537:
this.$ = { types: ['COLREF'], columnReference: $$[$0].chain };
break;
case 538:
this.$ = { types: [ 'NULL' ], text: $$[$0] };
break;
case 539:

     var fn = $$[$0-1].chain[$$[$0-1].chain.length - 1].name.toLowerCase();
     parser.addFunctionArgumentLocations(fn, $$[$0].expressions, $$[$0-1].chain);
     $$[$0-1].lastLoc.type = 'function';
     $$[$0-1].lastLoc.function = fn;
     $$[$0-1].lastLoc.location = {
       first_line: $$[$0-1].lastLoc.location.first_line,
       last_line: $$[$0-1].lastLoc.location.last_line,
       first_column: $$[$0-1].lastLoc.location.first_column,
       last_column: $$[$0-1].lastLoc.location.last_column - 1
     }
     if ($$[$0-1].lastLoc !== $$[$0-1].firstLoc) {
        $$[$0-1].firstLoc.type = 'database';
     } else {
       delete $$[$0-1].lastLoc.identifierChain;
     }
     if ($$[$0].activePosition) {
       parser.applyArgumentTypesToSuggestions(fn, $$[$0].activePosition);
     }
     this.$ = { function: fn, types: ['UDFREF'] };
   
break;
case 540: case 546: case 547:

     parser.addFunctionLocation(_$[$0-1], $$[$0-1]);
     parser.addFunctionArgumentLocations($$[$0-1], $$[$0].expressions);
     if ($$[$0].activePosition) {
       parser.applyArgumentTypesToSuggestions($$[$0-1], $$[$0].activePosition);
     }
     this.$ = { function: $$[$0-1], types: ['UDFREF'] };
   
break;
case 543:

     if ($$[$0].suggestKeywords) {
       this.$ = { types: ['COLREF'], columnReference: $$[$0], suggestKeywords: $$[$0].suggestKeywords };
     } else {
       this.$ = { types: ['COLREF'], columnReference: $$[$0] };
     }
   
break;
case 544: case 545:

     parser.addFunctionLocation(_$[$0-1], $$[$0-1]);
     parser.addFunctionArgumentLocations($$[$0-1], $$[$0].expressions);
     if ($$[$0].expressions && $$[$0].expressions.length) {
       this.$ = { function: $$[$0-1], expression: $$[$0].expressions[$$[$0].expressions.length - 1].expression, types: ['UDFREF'] }
     } else {
       this.$ = { function: $$[$0-1], types: ['UDFREF'] }
     }
   
break;
case 550:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: 1,
       expressions: [{ expression: { text: '' }, location: _$[$0-1] }]
     }
   
break;
case 551:

     parser.suggestValueExpressionKeywords($$[$0-2].expressions[$$[$0-2].expressions.length - 1].expression);
     this.$ = $$[$0-3];
   
break;
case 553: case 555:

     this.$ = {
       activePosition: 1,
       expressions: [{ expression: $$[$0], location: _$[$0] }]
     }
   
break;
case 554: case 556:

     this.$ = {
       activePosition: $$[$0-2].activePosition + 1,
       expressions: $$[$0-2].expressions.concat([{ expression: $$[$0], location: _$[$0] }])
     }
   
break;
case 557:

     this.$ = {
       activePosition: 1,
       expressions: [{ expression: $$[$0-2], location: _$[$0-2] }].concat($$[$0].expressions)
     }
   
break;
case 558:

     this.$ = {
       activePosition: $$[$0-4].activePosition + 1,
       expressions: $$[$0-4].expressions.concat([{ expression: $$[$0-2], location: _$[$0-2] }]).concat($$[$0].expressions)
     }
   
break;
case 559:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: $$[$0-2].activePosition + 1,
       expressions: $$[$0-2].expressions.concat([{ expression: { text: '' }, location: _$[$0] }])
     }
   
break;
case 560:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: $$[$0-4].activePosition + 1,
       expressions: $$[$0-4].expressions.concat([{ expression: { text: '' }, location: _$[$0-2] }]).concat($$[$0].expressions)
     }
   
break;
case 561:

     parser.suggestValueExpressionKeywords($$[$0-3].expressions[$$[$0-3].expressions.length - 1].expression);
     this.$ = {
       activePosition: $$[$0-3].activePosition,
       expressions: $$[$0-3].expressions.concat($$[$0].expressions)
     }
   
break;
case 562:

     parser.valueExpressionSuggest();
     this.$ = {
       cursorAtStart : true,
       activePosition: 1,
       expressions: [{ expression: { text: '' }, location: _$[$0-2] }].concat($$[$0].expressions)
     };
   
break;
case 563:

     parser.valueExpressionSuggest();
     this.$ = {
       cursorAtStart : true,
       activePosition: 1,
       expressions: [{ expression: { text: '' }, location: _$[$0-1] }, { expression: { text: '' }, location: _$[$0] }]
     };
   
break;
case 564:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: 2,
       expressions: [{ expression: { text: '' }, location: _$[$0-1] }, { expression: { text: '' }, location: _$[$0] }]
     };
   
break;
case 565:

     parser.valueExpressionSuggest();
     this.$ = {
       activePosition: 2,
       expressions: [{ expression: { text: '' }, location: _$[$0-3] }, { expression: { text: '' }, location: _$[$0-2] }].concat($$[$0].expressions)
     };
   
break;
case 581:

     parser.suggestKeywords([ 'WHERE' ]);
   
break;
case 582:

     parser.suggestKeywords([ 'SET' ]);
   
break;
case 598:

     parser.suggestKeywords([ '=' ]);
   
break;
case 607:

     if (! parser.yy.cursorFound) {
       parser.yy.result.useDatabase = $$[$0];
     }
   
break;
case 608: case 830:

     parser.suggestDatabases();
   
break;
case 609:

     parser.yy.result.useDatabase = $$[$0-1];
     if ($$[$0-1] === atob('aHVlX2F1dG9jb21wbGV0ZV9wYXJzZXI=')) {
       console.warn(atob('Q2xvdWRlcmEgMjAxNi0yMDIyIC0gSm9oYW4gQWhsZW4='));
     }
   
break;
case 611: case 612:

     return parser.yy.result;
   
break;
case 613:

     parser.prepareNewStatement();
   
break;
case 615: case 617: case 619:

     parser.addStatementLocation(_$[$0]);
   
break;
case 618: case 620:

     parser.addStatementLocation(_$[$0-3]);
   
break;
case 624:

     parser.suggestDdlAndDmlKeywords();
   
break;
case 753: case 756: case 844:
this.$ = '';
break;
case 768: case 771:

     parser.yy.correlatedSubQuery = false;
   
break;
case 769: case 773:

     parser.suggestKeywords(['EXISTS']);
   
break;
case 772:

     parser.suggestKeywords(['NOT EXISTS']);
   
break;
case 783: case 785: case 786: case 788:

     parser.suggestKeywords(['<', '<=', '<>', '=', '>', '>=']);
   
break;
case 817: case 819: case 845:

     parser.addTableLocation(_$[$0], [ { name: $$[$0] } ]);
     this.$ = { identifierChain: [ { name: $$[$0] } ] };
   
break;
case 818: case 820: case 846:

     parser.addDatabaseLocation(_$[$0-2], [ { name: $$[$0-2] } ]);
     parser.addTableLocation(_$[$0], [ { name: $$[$0-2] }, { name: $$[$0] } ]);
     this.$ = { identifierChain: [ { name: $$[$0-2] }, { name: $$[$0] } ] };
   
break;
case 822: case 827:

     parser.suggestDatabases();
     this.$ = { identifierChain: [{ name: $$[$0-2] }] };
   
break;
case 823: case 848:

     parser.suggestTablesOrColumns($$[$0-2]);
   
break;
case 824:
this.$ = [{ name: $$[$0] }];
break;
case 825:
this.$ = [{ name: $$[$0-2] }, { name: $$[$0-1] }];
break;
case 826:

     parser.suggestDatabases({ appendDot: true });
   
break;
case 847:

     parser.suggestTables();
     parser.suggestDatabases({ prependDot: true });
   
break;
case 850:
this.$ = { identifierChain: $$[$0-1].identifierChain, alias: $$[$0] };
break;
case 853:

     parser.yy.locations[parser.yy.locations.length - 1].type = 'column';
   
break;
case 854: case 1019:

     parser.addAsteriskLocation(_$[$0], $$[$0-2].concat({ asterisk: true }));
   
break;
case 856:

     this.$ = [ $$[$0].identifier ];
     parser.yy.firstChainLocation = parser.addUnknownLocation($$[$0].location, [ $$[$0].identifier ]);
   
break;
case 857:

     if (parser.yy.firstChainLocation) {
       parser.yy.firstChainLocation.firstInChain = true;
       delete parser.yy.firstChainLocation;
     }
     $$[$0-2].push($$[$0].identifier);
     parser.addUnknownLocation($$[$0].location, $$[$0-2].concat());
   
break;
case 858:

     parser.suggestColumns({
       identifierChain: $$[$0-2]
     });
     this.$ = { suggestKeywords: [{ value: '*', weight: 10000 }] };
   
break;
case 859:

     parser.suggestColumns({
       identifierChain: $$[$0-4]
     });
     this.$ = { suggestKeywords: [{ value: '*', weight: 10000 }] };
   
break;
case 860:
this.$ = [ $$[$0].identifier ];
break;
case 861:

     $$[$0-2].push($$[$0].identifier);
   
break;
case 863:

     parser.suggestColumns({ identifierChain: $$[$0-2] });
   
break;
case 864:

     parser.suggestColumns({ identifierChain: $$[$0-4] });
   
break;
case 866:
this.$ = { identifier: { name: $$[$0] }, location: _$[$0] };
break;
case 887: case 888:

     // verifyType($$[$0], 'BOOLEAN');
     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 889: case 914:

     this.$ = $$[$0];
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 890:

     // verifyType($$[$0], 'NUMBER');
     this.$ = $$[$0];
     $$[$0].types = ['NUMBER'];
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 891: case 892: case 893:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 894:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-5], $$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 895:

     this.$ = { types: [ 'BOOLEAN' ] };
     // clear correlated flag after completed sub-query (set by lexer)
     parser.yy.correlatedSubQuery = false;
   
break;
case 897: case 898: case 899: case 900:

     parser.addColRefToVariableIfExists($$[$0-2], $$[$0]);
     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 901: case 902: case 903: case 904: case 934: case 992: case 993:
this.$ = { types: [ 'BOOLEAN' ] };
break;
case 905:

     this.$ = { types: [ 'BOOLEAN' ] }
     parser.extractExpressionText(this.$, $$[$0-5], $$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 906:

     this.$ = { types: [ 'BOOLEAN' ] }
     parser.extractExpressionText(this.$, $$[$0-4], $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 907: case 908:

     // verifyType($$[$0-2], 'BOOLEAN');
     // verifyType($$[$0], 'BOOLEAN');
     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 909: case 910: case 911:

     // verifyType($$[$0-2], 'NUMBER');
     // verifyType($$[$0], 'NUMBER');
     this.$ = { types: [ 'NUMBER' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 912:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 913:

     this.$ = { types: [ 'BOOLEAN' ] };
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 915:

     this.$ = $$[$0];
     parser.extractExpressionText(this.$, $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 917:

     parser.suggestKeywords(['BETWEEN', 'EXISTS', 'IN', 'LIKE', 'REGEXP', 'RLIKE']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 918: case 920:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters };
break;
case 919:

     parser.suggestFunctions();
     parser.suggestColumns();
     parser.suggestKeywords(['EXISTS']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 921:

     parser.suggestFunctions({ types: [ 'BOOLEAN' ] });
     parser.suggestColumns({ types: [ 'BOOLEAN' ] });
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 922:
this.$ = { types: [ 'T' ], suggestFilters: $$[$0].suggestFilters };
break;
case 923:

     parser.suggestFunctions();
     parser.suggestColumns();
     this.$ = { types: [ 'T' ] };
   
break;
case 924:

     if (!$$[$0].typeSet) {
       parser.applyTypeToSuggestions({ types: ['NUMBER'] });
     }
     this.$ = { types: [ 'NUMBER' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 925:

     parser.suggestFunctions({ types: [ 'NUMBER' ] });
     parser.suggestColumns({ types: [ 'NUMBER' ] });
     this.$ = { types: [ 'NUMBER' ] };
   
break;
case 926:

     parser.suggestKeywords(['FALSE', 'NOT NULL', 'NOT TRUE', 'NOT FALSE', 'NULL', 'TRUE']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 927:

     parser.suggestKeywords(['FALSE', 'NULL', 'TRUE']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 928:

     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 929: case 930: case 931:

     parser.suggestKeywords(['NOT']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 932:

     parser.valueExpressionSuggest($$[$0-5], $$[$0-3] ? 'IS NOT DISTINCT FROM' : 'IS DISTINCT FROM');
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 933:

     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters }
   
break;
case 935:

     this.$ = $$[$0-1];
   
break;
case 936:

     parser.valueExpressionSuggest();
     this.$ = { types: ['T'], typeSet: true };
   
break;
case 937:

     parser.valueExpressionSuggest($$[$0], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 938: case 939: case 940:

     parser.valueExpressionSuggest($$[$0], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 941: case 942: case 943: case 944:

     if (!$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions($$[$0]);
       parser.addColRefIfExists($$[$0]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters }
   
break;
case 945: case 947:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 946:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ] , typeSet: true, endsWithLessThanOrEqual: true };
   
break;
case 948:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true, endsWithLessThanOrEqual: $$[$0-1] === '<='  };
   
break;
case 949: case 950: case 951: case 952:

     if (!$$[$0].typeSet) {
       parser.applyTypeToSuggestions($$[$0-2]);
       parser.addColRefIfExists($$[$0-2]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters }
   
break;
case 953:

     if ($$[$0].inValueEdit) {
       parser.valueExpressionSuggest($$[$0-3], $$[$0-2] + ' ' + $$[$0-1]);
       parser.applyTypeToSuggestions($$[$0-3]);
     }
     if ($$[$0].cursorAtStart) {
       parser.suggestKeywords(['SELECT']);
     }
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 954:

     if ($$[$0].inValueEdit) {
       parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
       parser.applyTypeToSuggestions($$[$0-2]);
     }
     if ($$[$0].cursorAtStart) {
       parser.suggestKeywords(['SELECT']);
     }
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 955: case 956:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-5].suggestFilters };
break;
case 957: case 958:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-4].suggestFilters };
break;
case 959:

     if ($$[$0-2].types[0] === $$[$0].types[0] && !$$[$0-5].typeSet) {
       parser.applyTypeToSuggestions($$[$0-2]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-5].suggestFilters };
   
break;
case 960:

     if ($$[$0-5].types[0] === $$[$0].types[0] && !$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions($$[$0-5]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters };
   
break;
case 961:

     if ($$[$0-5].types[0] === $$[$0-2].types[0] && !$$[$0].typeSet) {
       parser.applyTypeToSuggestions($$[$0-5]);
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 962:

     parser.valueExpressionSuggest($$[$0-5], $$[$0-1]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 963: case 969:

     parser.suggestValueExpressionKeywords($$[$0-1], ['AND']);
     this.$ = { types: [ 'BOOLEAN' ] };
   
break;
case 964:

     parser.valueExpressionSuggest($$[$0-3], $$[$0-2] + ' ' + $$[$0-1]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 965:

     if ($$[$0-4].types[0] === $$[$0-2].types[0] && !$$[$0-4].typeSet) {
       parser.applyTypeToSuggestions($$[$0-4])
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-4].suggestFilters };
   
break;
case 966:

     if ($$[$0-4].types[0] === $$[$0-2].types[0] && !$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions($$[$0-4])
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters };
   
break;
case 967:

     if ($$[$0-4].types[0] === $$[$0-2].types[0] && !$$[$0].typeSet) {
       parser.applyTypeToSuggestions($$[$0-4])
     }
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 968:

     parser.valueExpressionSuggest($$[$0-4], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-4]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true  };
   
break;
case 970:

     parser.valueExpressionSuggest($$[$0-2], $$[$0-1]);
     parser.applyTypeToSuggestions($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 971: case 973: case 975: case 977:

     parser.valueExpressionSuggest(undefined, $$[$0-1]);
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true, suggestFilters: true };
   
break;
case 972: case 976:

     parser.addColRefIfExists($$[$0]);
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters }
   
break;
case 974: case 978:

     parser.addColRefIfExists($$[$0-2]);
     this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0].suggestFilters }
   
break;
case 979: case 980:

     parser.valueExpressionSuggest(undefined, $$[$0-1]);
     parser.applyTypeToSuggestions({ types: [ 'NUMBER' ] });
     this.$ = { types: [ 'NUMBER' ], typeSet: true };
   
break;
case 981: case 982: case 983:

     if (!$$[$0-2].typeSet) {
       parser.applyTypeToSuggestions({ types: ['NUMBER'] });
       parser.addColRefIfExists($$[$0]);
     }
     this.$ = { types: [ 'NUMBER' ], suggestFilters: $$[$0-2].suggestFilters }
   
break;
case 984: case 985: case 986:

     parser.valueExpressionSuggest(undefined, $$[$0-1]);
     parser.applyTypeToSuggestions({ types: ['NUMBER'] });
     this.$ = { types: [ 'NUMBER' ], typeSet: true };
   
break;
case 987: case 988: case 989:

     if (!$$[$0].typeSet) {
       parser.applyTypeToSuggestions({ types: ['NUMBER'] });
       parser.addColRefIfExists($$[$0-2]);
     }
     this.$ = { types: [ 'NUMBER' ], suggestFilters: $$[$0].suggestFilters };
   
break;
case 990:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-1].suggestFilters };
break;
case 991:
this.$ = { types: [ 'BOOLEAN' ], suggestFilters: $$[$0-2].suggestFilters };
break;
case 994:

     parser.valueExpressionSuggest(undefined, $$[$0]);
     parser.applyTypeToSuggestions({ types: [ 'STRING' ] });
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 995:

     parser.valueExpressionSuggest(undefined, $$[$0-1] + ' ' + $$[$0]);
     parser.applyTypeToSuggestions({ types: [ 'STRING' ] });
     this.$ = { types: [ 'BOOLEAN' ], typeSet: true };
   
break;
case 997:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = { types: [ 'T' ], typeSet: true };
   
break;
case 999:

     parser.suggestValueExpressionKeywords($$[$0-2], ['WHEN']);
     this.$ = { types: [ 'T' ], typeSet: true };
   
break;
case 1000:

      this.$ = $$[$0];
      this.$.suggestFilters = $$[$0-1].suggestFilters;
    
break;
case 1001:
this.$ = { types: [ 'T' ], suggestFilters: $$[$0-1].suggestFilters };
break;
case 1003: case 1005:

     $$[$0].position = 1;
   
break;
case 1004:

     $$[$0].position = $$[$0-2].position + 1;
     this.$ = $$[$0];
   
break;
case 1006:

     $$[$0-2].position += 1;
   
break;
case 1007:

     $$[$0-2].position = 1;
   
break;
case 1008:

     $$[$0-4].position += 1;
   
break;
case 1009:

     parser.valueExpressionSuggest();
     $$[$0-2].position += 1;
   
break;
case 1010:

     parser.valueExpressionSuggest();
     $$[$0-4].position += 1;
   
break;
case 1011:

     parser.suggestValueExpressionKeywords($$[$0-3]);
   
break;
case 1012: case 1013:

     parser.valueExpressionSuggest();
     this.$ = { cursorAtStart : true, position: 1 };
   
break;
case 1014: case 1015:

     parser.valueExpressionSuggest();
     this.$ = { position: 2 };
   
break;
case 1018:

     var lastLoc = parser.yy.locations[parser.yy.locations.length - 1];
     if (lastLoc.type !== 'variable') {
       lastLoc.type = 'column';
     }
     // used for function references with db prefix
     var firstLoc = parser.yy.locations[parser.yy.locations.length - $$[$0].length];
     this.$ = { chain: $$[$0], firstLoc: firstLoc, lastLoc: lastLoc }
   
break;
case 1025:

     parser.suggestValues($$[$0]);
   
break;
case 1026:
this.$ = { types: [ 'NUMBER' ], text: $$[$0] };
break;
case 1032: case 1034: case 1035:
this.$ = $$[$0-1] + $$[$0];
break;
case 1033: case 1036:
this.$ = $$[$0-2] + $$[$0-1] + $$[$0];
break;
case 1037:
this.$ = $$[$0-3] + $$[$0-2] + $$[$0-1] + $$[$0];
break;
case 1038:

     if (/\$\{[^}]*\}/.test($$[$0])) {
       parser.addVariableLocation(_$[$0], $$[$0]);
       this.$ = { types: [ 'STRING' ], columnReference: [{ name: $$[$0] }], text: "'" + $$[$0] + "'" }
     } else {
       this.$ = { types: [ 'STRING' ] }
     }
   
break;
case 1039:

     if (/\$\{[^}]*\}/.test($$[$0])) {
       parser.addVariableLocation(_$[$0], $$[$0]);
       this.$ = { types: [ 'STRING' ], columnReference: [{ name: $$[$0] }], text: '"' + $$[$0] + '"' }
     } else {
       this.$ = { types: [ 'STRING' ], text: '"' + $$[$0] + '"' }
     }
   
break;
case 1040:
this.$ = { types: [ 'BOOLEAN' ], text: $$[$0] };
break;
case 1041:

    this.$ = { partialQuote: '\'', missingEndQuote: parser.yy.missingEndQuote };
  
break;
case 1042:

    this.$ = { partialQuote: '"', missingEndQuote: parser.yy.missingEndQuote };
  
break;
case 1049:

     this.$ = $$[$0];

     if (parser.yy.latestTablePrimaries.length > 0) {
       var idx = parser.yy.latestTablePrimaries.length - 1;
       var tables = [];
       do {
         var tablePrimary = parser.yy.latestTablePrimaries[idx];
         if (!tablePrimary.subQueryAlias) {
           tables.unshift(tablePrimary.alias ? { identifierChain: tablePrimary.identifierChain, alias: tablePrimary.alias } : { identifierChain: tablePrimary.identifierChain })
         }
         idx--;
       } while (idx >= 0 && tablePrimary.join && !tablePrimary.subQueryAlias)

       if (tables.length > 0) {
         this.$.suggestJoins = {
           prependJoin: true,
           tables: tables
         };
       }
      }
   
break;
case 1056:

     this.$ = {
       primary: $$[$0-1]
     }
     if ($$[$0-1].identifierChain) {
       if ($$[$0]) {
         $$[$0-1].alias = $$[$0].alias
         parser.addTableAliasLocation($$[$0].location, $$[$0].alias, $$[$0-1].identifierChain);
       }
       parser.addTablePrimary($$[$0-1]);
     }

     var keywords = [];
     if (!$$[$0]) {
       keywords = ['AS'];
     } else if ($$[$0].suggestKeywords) {
       keywords = $$[$0].suggestKeywords;
     }
     if (keywords.length > 0) {
       this.$.suggestKeywords = keywords;
     }
   
break;
case 1057:

     this.$ = {
       primary: $$[$0-1]
     };

     if ($$[$0]) {
       this.$.primary.alias = $$[$0].alias;
       parser.addTablePrimary({ subQueryAlias: $$[$0].alias });
       parser.addSubqueryAliasLocation($$[$0].location, $$[$0].alias, $$[$0-1].identifierChain);
     }

     var keywords = [];
     if (!$$[$0]) {
       keywords = ['AS'];
     }
     if (keywords.length > 0) {
       this.$.suggestKeywords = keywords;
     }
   
break;
case 1058:

     if ($$[$0]) {
       parser.addTableAliasLocation($$[$0].location, $$[$0].alias, $$[$0-1].identifierChain);
     }
   
break;
case 1059:

     if ($$[$0]) {
       parser.addTablePrimary({ subQueryAlias: $$[$0].alias });
       parser.addSubqueryAliasLocation($$[$0].location, $$[$0].alias);
     }
   
break;
case 1069:

     parser.pushQueryState();
   
break;
case 1070:

     parser.popQueryState();
   
break;
case 1072:

     if ($$[$0-1]) {
       $$[$0-2].alias = $$[$0-1].alias;
       parser.addTablePrimary({ subQueryAlias: $$[$0-1].alias });
       parser.addSubqueryAliasLocation($$[$0-1].location, $$[$0-1].alias, $$[$0-2].identifierChain);
     }
     this.$ = $$[$0-2];
   
break;
case 1075:

     var subQuery = parser.getSubQuery($$[$0]);
     subQuery.columns.forEach(function (column) {
       parser.expandIdentifierChain({ wrapper: column });
       delete column.linked;
     });
     parser.popQueryState(subQuery);
     this.$ = subQuery;
   
break;
case 1092: case 1093: case 1094: case 1095:
this.$ = { alias: $$[$0], location: _$[$0] };
break;
case 1102: case 1103:

     if (parser.yy.result.suggestFunctions) {
       parser.suggestAggregateFunctions();
     }
   
break;
case 1104:

     if (!$$[$0-2] && !$$[$0-1]) {
       parser.suggestKeywords([{ value: 'PARTITION BY', weight: 2 }, { value: 'ORDER BY', weight: 1 }]);
     } else if (!$$[$0-2]) {
       parser.suggestKeywords(['PARTITION BY']);
     }
   
break;
case 1105:

      if (!$$[$0-1]) {
        parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'ORDER BY', weight: 2 }]);
      } else {
        parser.suggestValueExpressionKeywords($$[$0-3]);
      }
    
break;
case 1114:

      // Only allowed in last order by
      delete parser.yy.result.suggestAnalyticFunctions;
    
break;
case 1115:

      var keywords = [];
      if ($$[$0-2].suggestKeywords) {
        keywords = parser.createWeightedKeywords($$[$0-2].suggestKeywords, 2);
      }
      if (!$$[$0]) {
        keywords = keywords.concat([{ value: 'RANGE BETWEEN', weight: 1 }, { value: 'ROWS BETWEEN', weight: 1 }]);
      }
      parser.suggestKeywords(keywords);
    
break;
case 1121:

     parser.suggestKeywords(['BETWEEN']);
   
break;
case 1122:

     if (!$$[$0-2] && !$$[$0-1]) {
       parser.suggestKeywords(['CURRENT ROW', 'UNBOUNDED PRECEDING']);
     } else if (!$$[$0-1]) {
       parser.suggestKeywords(['AND']);
     }
   
break;
case 1127:

    lexer.popState();
  
break;
case 1128:

    lexer.begin('hdfs');
  
break;
case 1130:

      parser.suggestHdfs({ path: $$[$0-3] });
    
break;
case 1131:

     parser.suggestHdfs({ path: $$[$0-2] });
   
break;
case 1132:

      parser.suggestHdfs({ path: $$[$0-1] });
    
break;
case 1133:

     parser.suggestHdfs({ path: '' });
   
break;
case 1134:

      parser.suggestHdfs({ path: '' });
    
break;
case 1140:

     parser.suggestKeywords(['PRECEDING']);
   
break;
case 1141: case 1146:

     parser.suggestKeywords(['ROW']);
   
break;
case 1145:

     parser.suggestKeywords(['CURRENT ROW', 'UNBOUNDED FOLLOWING']);
   
break;
case 1147:

     parser.suggestKeywords(['FOLLOWING']);
   
break;
case 1151:

     $$[$0-3].owner = 'upsert';
     parser.addTablePrimary($$[$0-3]);
   
break;
case 1152:

     $$[$0-2].owner = 'upsert';
     parser.addTablePrimary($$[$0-2]);
   
break;
case 1153:

     parser.suggestKeywords(['INTO']);
   
break;
case 1158:

     $$[$0-2].owner = 'upsert';
     parser.addTablePrimary($$[$0-2]);
     if (parser.yy.result.suggestColumns) {
       parser.yy.result.suggestColumns.owner = 'upsert';
     }
   
break;
case 1159:

     $$[$0-3].owner = 'upsert';
     parser.addTablePrimary($$[$0-3]);
     parser.suggestKeywords(['VALUES', 'SELECT']);
   
break;
case 1168:
this.$ = { inValueEdit: true };
break;
case 1169:
this.$ = { inValueEdit: true, cursorAtStart: true };
break;
case 1170: case 1171: case 1172:

     this.$ = { suggestKeywords: ['NOT'] }
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 1176: case 1177: case 1178:

     parser.suggestFunctions({ types: [ 'STRING' ] });
     parser.suggestColumns({ types: [ 'STRING' ] });
     this.$ = { types: ['BOOLEAN'] }
   
break;
case 1179:

     this.$ = parser.findCaseType($$[$0-1])
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 1180:

     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
     parser.extractExpressionText(this.$, $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 1181:
this.$ = parser.findCaseType($$[$0-1]);
break;
case 1182:

     parser.suggestValueExpressionKeywords($$[$0-1], ['END']);
     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1183:

     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1184:
this.$ = parser.findCaseType($$[$0-2]);
break;
case 1185:

     if ($$[$0].toLowerCase() !== 'end') {
       parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'END', weight: 3 }, { value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     } else {
       parser.suggestValueExpressionKeywords($$[$0-3], [{ value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     }
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1186:

     if ($$[$0].toLowerCase() !== 'end') {
       parser.suggestValueExpressionKeywords($$[$0-2], [{ value: 'END', weight: 3 }, { value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     } else {
       parser.suggestValueExpressionKeywords($$[$0-2], [{ value: 'ELSE', weight: 2 }, { value: 'WHEN', weight: 1 }]);
     }
     this.$ = parser.findCaseType($$[$0-2]);
   
break;
case 1187:

     $$[$0-3].caseTypes.push($$[$0-1]);
     this.$ = parser.findCaseType($$[$0-3]);
     this.$.suggestFilters = $$[$0-1].suggestFilters
   
break;
case 1188:

     parser.valueExpressionSuggest();
     this.$ = parser.findCaseType($$[$0-3]);
   
break;
case 1189:

     parser.valueExpressionSuggest();
     this.$ = { types: [ 'T' ], typeSet: true };
   
break;
case 1190:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = $$[$0-1];
   
break;
case 1191:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = { types: [ 'T' ] };
   
break;
case 1194:

     this.$ = { caseTypes: [ $$[$0] ], lastType: $$[$0] }
     parser.extractExpressionText(this.$, $$[$0]);
   
break;
case 1195:

     $$[$0-1].caseTypes.push($$[$0]);
     this.$ = { caseTypes: $$[$0-1].caseTypes, lastType: $$[$0] };
     parser.extractExpressionText(this.$, $$[$0-1], $$[$0]);
   
break;
case 1199:

     parser.suggestValueExpressionKeywords($$[$0-2], ['WHEN']);
   
break;
case 1201:

     this.$ = $$[$0]
     parser.extractExpressionText(this.$, $$[$0-3], $$[$0-2], $$[$0-1], $$[$0]);
   
break;
case 1202:
this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: $$[$0].suggestFilters };
break;
case 1203:
this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: $$[$0-1].suggestFilters };
break;
case 1204:
this.$ = { caseTypes: [$$[$0]], suggestFilters: $$[$0-2].suggestFilters };
break;
case 1205: case 1206:
this.$ = { caseTypes: [$$[$0]], suggestFilters: $$[$0].suggestFilters };
break;
case 1207:

     parser.suggestKeywords(['WHEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1208:

     parser.suggestKeywords(['WHEN']);
     this.$ = { caseTypes: [$$[$0]] };
   
break;
case 1209:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['WHEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1210:

      parser.valueExpressionSuggest();
      parser.suggestKeywords(['WHEN']);
      this.$ = { caseTypes: [{ types: ['T'] }] };
    
break;
case 1211: case 1213:

     parser.valueExpressionSuggest();
     this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: true };
   
break;
case 1212:

     parser.valueExpressionSuggest();
     parser.suggestKeywords(['THEN']);
     this.$ = { caseTypes: [{ types: ['T'] }], suggestFilters: true };
   
break;
case 1214:

     parser.valueExpressionSuggest();
     this.$ = { caseTypes: [$$[$0]], suggestFilters: true };
   
break;
case 1215:

     parser.suggestValueExpressionKeywords($$[$0-1], ['THEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1216:

     parser.suggestValueExpressionKeywords($$[$0-2], ['THEN']);
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
case 1217: case 1218: case 1219: case 1220:

     parser.valueExpressionSuggest();
     this.$ = { caseTypes: [{ types: ['T'] }] };
   
break;
}
},
table: [o($V0,$V1,{331:1,250:2}),{1:[3]},o($V2,$V3,{332:3,336:4,19:5,308:6,44:7,20:8,21:9,22:10,23:11,24:12,25:13,26:14,27:15,28:16,29:17,34:19,35:20,309:21,310:22,155:23,156:24,36:25,42:26,498:32,4:$V4,8:$V5,12:$V6,16:$V7,161:$V8,228:$V9,258:$Va,314:$Vb,330:$Vc,499:$Vd}),{333:[1,37],337:[1,38]},o($V2,[2,615]),o($V2,[2,621]),o($V2,[2,622]),o($V2,[2,623]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),o($V2,[2,19]),o($V2,[2,20]),o($V2,[2,21]),o($V2,[2,22]),o($V2,[2,23]),o($V2,[2,24]),{30:[1,39],31:40,59:41,63:$Ve,113:$Vf,215:$Vg,340:44,341:$Vh,342:$Vi},o($V2,[2,27]),o($V2,[2,28]),o($V2,[2,572]),o($V2,[2,573]),{79:[1,49],156:48,228:$V9},o($Vj,$Vk,{157:50,245:51,247:52,249:$Vl}),{37:54,125:[1,55]},{43:[1,56]},{39:[1,59],47:[1,60],57:57,63:[1,58],358:$Vm,377:$Vn},{39:[1,65],47:[1,66],57:63,63:[1,64],358:$Vm,377:$Vn},{39:[1,67]},{59:68,63:$Ve,113:$Vf,215:$Vg,340:44,341:$Vh,342:$Vi},{59:74,63:$Ve,113:$Vf,119:73,215:$Vg,315:69,321:70,323:71,340:44,341:$Vh,342:$Vi,351:$Vo,421:72},o($V2,[2,1150]),{59:74,63:$Ve,113:$Vf,119:78,162:76,164:77,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},o([54,55,63,79,95,96,107,112,113,215,240,254,256,257,258,281,282,283,284,285,286,287,288,289,290,291,293,294,341,342,344,345,348,351,355,363,383,384],$Vp,{229:79,30:$Vq,234:$Vr}),{39:[1,82],47:[1,83]},{369:[1,84]},{1:[2,610]},o($V0,$V1,{250:85}),o($V2,[2,25]),{32:[1,86],254:[1,87]},o($Vs,[2,455]),o($Vt,[2,633]),o($Vt,[2,634]),o($Vt,[2,635]),o($Vt,[2,630]),o($Vt,[2,631]),o($Vt,[2,632]),o($Vj,$Vk,{245:51,247:52,157:88,249:$Vl}),{44:89,155:23,156:24,161:$V8,228:$V9},o($Vj,[2,246]),o($Vj,[2,436],{247:90,249:$Vl}),o($Vu,[2,438]),o([30,228,234],$V1,{250:91}),o($V2,[2,29]),{79:[1,92]},{44:93,155:23,156:24,161:$V8,228:$V9},o($Vv,$Vw,{58:94,293:$Vx}),{59:96,63:$Ve,113:$Vf,215:$Vg,340:44,341:$Vh,342:$Vi},o($Vy,$Vw,{58:97,293:$Vx}),o($Vy,$Vw,{58:98,293:$Vx}),o($Vz,[2,750]),o($Vz,[2,751]),o($Vy,$VA,{150:99,293:$VB}),{59:101,63:$Ve,113:$Vf,215:$Vg,340:44,341:$Vh,342:$Vi},o($VC,$VA,{150:102,293:$VB}),o($VC,$VA,{150:103,293:$VB}),o($VC,$VA,{150:104,293:$VB}),o($V2,[2,607]),{16:[1,105]},{16:[2,586]},{16:[2,588]},{16:[2,849],59:74,63:$Ve,113:$Vf,119:106,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},o($VD,[2,845],{254:[1,107]}),o($Vt,[2,842]),{56:[1,108],351:[1,109]},o([79,228],[2,255],{85:[1,110]}),o($VE,[2,257]),{43:[1,111]},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:114,214:144,215:$Vg,230:112,237:113,240:$VM,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($V91,[2,398]),o($V91,[2,399]),{40:170,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},{40:173,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},{40:174,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},o($V2,$V3,{336:4,19:5,308:6,44:7,20:8,21:9,22:10,23:11,24:12,25:13,26:14,27:15,28:16,29:17,34:19,35:20,309:21,310:22,155:23,156:24,36:25,42:26,498:32,332:175,4:$V4,8:$V5,12:$V6,16:$V7,161:$V8,228:$V9,258:$Va,314:$Vb,330:$Vc,499:$Vd}),{33:176,51:179,54:$VF,55:$VG,59:177,63:$Ve,96:[1,182],113:$Vf,214:183,215:$Vg,254:$VN,255:178,256:[1,180],257:[1,181],340:44,341:$Vh,342:$Vi,345:[1,184],383:$V71,384:$V81,389:186,392:187,443:[1,185],448:150,449:151},{59:188,63:$Ve,113:$Vf,215:$Vg,340:44,341:$Vh,342:$Vi},o($Vj,[2,244]),{81:[1,189]},o($Vu,[2,439]),{30:$Vq,228:$Vp,229:190,234:$Vr},{59:74,63:$Ve,87:193,113:$Vf,119:146,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,403:191,419:192},o($V2,[2,37]),o($V2,[2,54],{340:44,59:194,63:$Ve,113:$Vf,215:$Vg,341:$Vh,342:$Vi}),{95:[1,195]},o($V2,[2,63]),{59:74,63:$Ve,64:196,66:197,72:198,113:$Vf,119:199,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{59:74,63:$Ve,72:200,113:$Vf,119:199,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{59:74,63:$Ve,113:$Vf,119:201,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{363:[1,202]},o($V2,[2,229]),{40:203,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},{40:204,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},{40:205,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},{59:74,63:$Ve,87:138,113:$Vf,119:146,149:209,215:$Vg,316:206,325:207,327:208,340:44,341:$Vh,342:$Vi,351:$Vo,423:210},{16:[2,850]},{59:74,63:$Ve,113:$Vf,119:211,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{351:[1,212]},o($Vt,[2,844]),{59:74,63:$Ve,113:$Vf,119:78,164:213,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{79:[1,214]},o($Vu,[2,387],{231:215,168:217,85:[1,216],169:[1,218]}),o($Va1,[2,404]),o($Va1,$Vb1,{340:44,59:74,389:186,392:187,239:219,434:233,119:234,51:235,32:$Vc1,43:$Vd1,54:$VF,55:$VG,63:$Ve,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,113:$Vf,142:$Vi1,215:$Vg,240:$Vj1,341:$Vh,342:$Vi,345:$Vk1,349:$Vl1,350:$Vm1,351:$Vo,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($Va1,[2,420]),o($Vt1,[2,886]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:240,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:241,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:242,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:243,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{79:$Vu1,431:244},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:246,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:248,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,386:$Vv1,389:152,392:153,423:129,435:247,444:137,446:145,448:150,449:151,450:154,504:249,506:250},o($Vt1,[2,537],{297:252,79:$Vw1}),{79:$Vw1,297:254},o($Vt1,[2,535]),o($Vt1,[2,536]),o($Vt1,[2,538]),o($Vx1,[2,1018],{254:[1,255]}),{79:[2,517]},{79:[2,518]},{79:[2,519]},{79:[2,520]},o($Vt1,[2,566],{262:256,264:257,305:$Vy1}),{264:259,305:$Vy1},o($Vt1,[2,474]),o($Vt1,[2,1024]),o($Vz1,[2,856]),o($VA1,[2,482]),o($VA1,[2,483]),o($VA1,[2,484]),{79:[1,260]},{79:[1,261]},o($Vt1,[2,1026]),o($Vt1,[2,1027]),o([32,43,50,54,55,63,77,79,81,85,95,107,108,109,112,113,129,142,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,240,249,251,254,333,337,341,342,345,349,350,351,352,353,354,356,359,360,361,362,364,367,368,370,371,373,374,376,378,379,380,381,382,385,386,433],[2,866]),{79:[1,262]},{79:[1,263]},{79:[1,264]},o($Vt1,[2,1029]),o($Vt1,[2,1030]),o($Vt1,[2,1038]),o($Vt1,[2,1039]),o($Vt1,[2,1040]),{79:[2,493]},{79:[2,494]},{79:[2,495]},{79:[2,496]},{79:[2,497]},{79:[2,498]},{79:[2,499]},{79:[2,500]},o($Vt1,[2,1031],{254:[1,265]}),{383:[1,266],384:[1,267]},{383:[1,268]},{54:[1,270],56:[1,269]},{55:[1,272],56:[1,271]},o($Vt1,[2,1043]),o($Vt1,[2,1044]),{125:[2,34]},o($VB1,[2,817],{254:[1,273]}),o($VB1,[2,819],{254:[1,274]}),{43:[2,43]},o($VC1,[2,804],{413:275,130:276,79:$VD1}),o($V2,[2,616]),o($V2,[2,26]),o($V2,[2,457]),o($V2,[2,458],{340:44,59:278,63:$Ve,113:$Vf,215:$Vg,341:$Vh,342:$Vi}),o($V2,[2,460]),o($V2,[2,461]),o($V2,[2,462]),o($V2,[2,463]),o($Vv,[2,1021]),{214:279,254:$VN,383:$V71,384:$V81,448:150,449:151},{214:280,254:$VN,383:$V71,384:$V81,448:150,449:151},o($VE1,[2,758]),o($VE1,[2,759]),o($Vs,[2,456]),o($Vj,$Vk,{245:51,247:52,157:281,249:$Vl}),{156:282,228:$V9},{81:[1,283],85:[1,284]},o($VF1,[2,831]),{32:[1,285]},o($V2,$VG1,{60:286,48:287,49:288,50:$VH1}),{363:[1,290]},o($V2,[2,64]),o($VI1,[2,160],{67:291,124:292,125:[1,293]}),o($VJ1,[2,76],{73:294,76:295,77:[1,296],79:[1,297]}),o($VK1,[2,824],{254:[1,298]}),o($VL1,[2,212],{144:299,146:300,79:[1,301]}),o($V2,[2,765],{151:302,399:[1,303]}),o($VC,[2,768]),o($V2,[2,236],{153:304,154:[1,305]}),o($V2,[2,238]),o($V2,[2,464]),o($VM1,[2,603],{317:306,85:[1,307],169:[1,308]}),o($VN1,[2,590]),{32:[1,309]},{32:[2,600]},o($VO1,[2,853],{254:[1,310]}),o($VD,[2,846]),o($Vt,[2,843]),o($VE,[2,258]),o($VP1,$VQ1,{166:311,461:312}),o($Vu,[2,388]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:114,214:144,215:$Vg,237:313,240:$VM,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VR1,$VS1,{235:314,242:315,244:316,251:$VT1}),{40:325,55:$VG,59:74,63:$Ve,79:$Vu1,113:$Vf,119:171,170:318,173:319,194:321,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172,431:326,451:320,453:322,455:323,456:324},o($Va1,[2,419]),o($VU1,[2,1045],{430:327,95:[1,328]}),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:329,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:330,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:331,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:332,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{77:$Ve1,352:[1,334],367:[1,333],373:$Vr1,374:$Vs1,434:335},{79:[1,336]},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:337,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:338,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:339,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:340,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:341,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:342,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vt1,[2,912]),o($VV1,[2,1092]),o($VV1,[2,1093]),{51:344,54:$VF,55:$VG,59:74,63:$Ve,113:$Vf,119:343,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,389:186,392:187},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:345,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:346,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:347,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VW1,[2,887],{434:233,32:$Vc1,77:$Ve1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VW1,[2,888],{434:233,32:$Vc1,77:$Ve1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VW1,[2,889],{434:233,32:$Vc1,77:$Ve1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VX1,[2,890],{434:233}),o($Vt1,[2,895]),o($VP1,$VQ1,{461:312,431:326,166:348,456:349,79:$Vu1}),{32:$Vc1,77:$Ve1,81:[1,350],95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,434:233},o($Vt1,[2,914]),{32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,386:$Vv1,434:233,435:351,504:249,506:250},{361:[1,353],362:[1,352],386:$Vv1,506:354},o($VY1,[2,1194]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:355,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vt1,[2,533]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,81:[1,356],87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:358,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,279:357,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vt1,[2,534]),{59:74,63:$Ve,87:360,113:$Vf,119:146,215:$Vg,240:[1,359],340:44,341:$Vh,342:$Vi,351:$Vo},o($Vt1,[2,472]),o($Vt1,[2,567]),{59:74,63:$Ve,79:[1,363],113:$Vf,119:361,215:$Vg,306:362,340:44,341:$Vh,342:$Vi,351:$Vo},o($Vt1,[2,473]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,81:[1,364],87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:358,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,279:365,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,81:[1,367],87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:366,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o([54,55,63,79,81,95,96,107,112,113,215,254,256,257,258,281,282,283,284,285,286,287,288,289,290,291,293,294,341,342,344,345,348,351,355,363,383,384],$Vp,{229:368,30:$Vq,234:$Vr}),o($VZ1,$Vp,{229:371,30:$Vq,81:[1,370],234:$Vr,240:[1,369]}),o($VZ1,$Vp,{229:372,30:$Vq,81:[1,373],234:$Vr}),o($Vt1,[2,1032],{383:[1,374],384:[1,375]}),o($Vt1,[2,1034]),{383:[1,376]},o($Vt1,[2,1035]),{54:[1,377]},o($V_1,[2,753]),{55:[1,378]},o($V$1,[2,756]),{59:74,63:$Ve,113:$Vf,119:379,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{55:$VG,392:380},{140:[1,381],156:382,228:$V9},o($VC1,[2,805]),{59:74,63:$Ve,87:384,113:$Vf,119:146,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,415:383},o($V2,[2,459]),o($Vv,[2,1022]),o($Vv,[2,1023]),o($Vj,[2,245]),o($Vu,[2,444]),o($V2,[2,780]),{59:74,63:$Ve,87:193,113:$Vf,119:146,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,419:385},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:386,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($V2,[2,55]),o($V2,[2,61]),o([43,81,85,109,333,337],[2,47]),{51:387,54:$VF,55:$VG,389:186,392:187},o([63,113,215,333,337,341,342,351],[2,771]),o($V2,[2,198],{68:388,43:[1,389]}),o($VI1,[2,161]),{126:[1,390]},o($VJ1,[2,73]),o($VJ1,[2,77]),{40:391,55:$VG,59:74,63:$Ve,113:$Vf,119:171,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172},{59:74,63:$Ve,80:392,84:393,87:394,113:$Vf,119:146,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{59:74,63:$Ve,113:$Vf,119:395,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{43:$VG1,48:396,49:288,50:$VH1},o($VL1,[2,213]),{59:74,63:$Ve,87:138,113:$Vf,119:146,147:397,149:398,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,423:210},o($V2,[2,222]),o($V2,[2,766]),o($V2,[2,230]),o($V2,[2,237]),o($V2,$VS1,{244:316,242:399,251:$VT1}),{59:74,63:$Ve,87:138,113:$Vf,119:146,149:209,215:$Vg,325:400,327:208,340:44,341:$Vh,342:$Vi,351:$Vo,423:210},{40:325,55:$VG,59:74,63:$Ve,79:$Vu1,113:$Vf,119:171,173:401,194:321,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172,431:326,451:320,453:322,455:323,456:324},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:403,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,328:402,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{59:74,63:$Ve,87:360,113:$Vf,119:146,215:$Vg,240:[1,404],340:44,341:$Vh,342:$Vi,351:$Vo},{81:[1,405]},{44:413,155:23,156:24,161:$V8,228:$V9,463:406,465:407,467:408,469:409,471:410,473:411,475:412},o($Va1,[2,405]),o($Vu,[2,400]),o($V02,[2,277],{175:414,176:415,177:[1,416]}),o($VR1,[2,449]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:418,214:144,215:$Vg,252:417,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o([81,177,188,213,219,249,251,333,337],[2,267],{85:[1,419]}),o($V12,[2,270]),o($V12,[2,1047]),o($V12,[2,1049],{191:420,193:421,201:$V22,202:$V32,203:$V42,204:$V52,205:$V62,206:$V72,207:$V82,208:$V92}),o($V12,[2,1050]),o($Va2,$Vb1,{340:44,59:74,389:186,392:187,119:234,51:235,239:430,43:$Vd1,54:$VF,55:$VG,63:$Ve,113:$Vf,215:$Vg,341:$Vh,342:$Vi,351:$Vo}),o($Va2,$Vb1,{340:44,59:74,389:186,392:187,119:234,51:235,239:431,43:$Vd1,54:$VF,55:$VG,63:$Ve,113:$Vf,215:$Vg,341:$Vh,342:$Vi,351:$Vo}),o($Vb2,[2,1061]),o($Vb2,[2,1063]),{96:[1,432],234:[1,435],256:[1,433],257:[1,434]},o($VU1,[2,1046]),o($Vc2,[2,897],{434:233,77:$Ve1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($Vc2,[2,898],{434:233,77:$Ve1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($Vc2,[2,899],{434:233,77:$Ve1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($Vc2,[2,900],{434:233,77:$Ve1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),{79:[1,436]},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:437,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vt1,[2,913]),o($VP1,$VQ1,{340:44,59:74,295:116,296:124,292:125,260:126,298:127,423:129,261:134,263:135,265:136,444:137,87:138,272:139,273:140,274:141,214:144,446:145,119:146,278:147,448:150,449:151,389:152,392:153,450:154,461:312,166:438,432:439,138:440,54:$VF,55:$VG,63:$Ve,79:$VH,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,293:$V01,294:$V11,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81}),{32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,433:[1,441],434:233},o($Vd2,[2,907],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($Vd2,[2,908],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VX1,[2,909],{434:233,77:$Ve1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VX1,[2,910],{434:233,77:$Ve1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VX1,[2,911],{434:233,77:$Ve1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VV1,[2,1094]),o($VV1,[2,1095]),o($VX1,[2,1170],{434:233}),o($VX1,[2,1171],{434:233}),o($VX1,[2,1172],{434:233}),{81:[1,442]},{43:$Vd1,51:235,54:$VF,55:$VG,59:74,63:$Ve,81:$Vb1,113:$Vf,119:234,215:$Vg,239:443,340:44,341:$Vh,342:$Vi,351:$Vo,389:186,392:187},o($Vt1,[2,896]),o($Vt1,[2,915]),o($Vt1,[2,1179]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:444,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VY1,[2,1195]),{32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,380:[1,445],434:233},o($Vt1,[2,548]),{81:[1,446],85:$Ve2},o($VF1,[2,553],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($Vx1,[2,1019]),o($Vz1,[2,857]),o($Vt1,[2,569]),o($Vt1,[2,570]),o($Vf2,[2,1106],{477:448,481:449,125:[1,450]}),{305:[2,512]},{81:[1,451],85:$Ve2},{32:$Vc1,43:[1,452],77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,434:233},o($Vt1,[2,522]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,81:[1,453],87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:358,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,279:454,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{81:[1,455]},o($VA1,[2,502]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:358,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,279:456,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:457,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VA1,[2,508]),o($Vt1,[2,1033]),{383:[1,458]},o($Vt1,[2,1036]),o($V_1,[2,752]),o($V$1,[2,755]),o($VB1,[2,818]),o($VB1,[2,820]),{79:$Vg2,500:459,503:460},o($V2,[2,1152]),{81:[1,462],85:[1,463]},o($VF1,[2,810]),o($VF1,[2,832]),o($VF1,[2,837],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o([43,50,81,85,95,96,109,333,337],[2,48]),o($V2,[2,68]),o($VP1,[2,202],{143:464}),{127:465,129:[1,466]},o($VJ1,[2,78]),{81:[1,467],85:[1,468]},o($VF1,[2,84]),{88:469,97:470,98:471,99:472,100:473,101:474,102:475,103:476,107:$Vh2,112:$Vi2,113:$Vj2,353:$Vk2,354:$Vl2,356:$Vm2,359:$Vn2,360:$Vo2,364:$Vp2,368:$Vq2,378:$Vr2,379:$Vs2,381:$Vt2,382:$Vu2,385:$Vv2},o($VK1,[2,825]),{43:[1,492]},{81:[1,493],85:[1,494]},o($VF1,$VG1,{49:288,48:495,50:$VH1}),o($V2,[2,576]),o($VN1,[2,591]),o($VM1,[2,604]),o($VN1,[2,596]),o($VN1,[2,601],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($VO1,[2,854]),o($VE,[2,263]),{81:[2,1075]},{81:[2,1077]},{81:[2,1079]},{81:[2,1081]},{81:[2,1083]},{81:[2,1085]},{81:[2,1087]},{81:[2,1089]},o($Vw2,[2,306],{186:496,187:497,188:[1,498]}),o($V02,[2,278]),{126:[1,499]},o($VR1,[2,450]),o($VR1,[2,453],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),{40:325,55:$VG,59:74,63:$Ve,79:$Vu1,113:$Vf,119:171,173:500,194:321,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172,431:326,451:320,453:322,455:323,456:324},o($V12,[2,1053],{193:501,201:$V22,202:$V32,203:$V42,204:$V52,205:$V62,206:$V72,207:$V82,208:$V92}),{40:325,55:$VG,59:74,63:$Ve,79:$Vu1,113:$Vf,119:171,194:502,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172,431:326,455:323,456:324},{202:[1,503]},{202:[1,504],204:[1,505]},{202:[1,506]},o($Vx2,[2,331]),{202:[1,508],204:[1,509],205:[1,507],207:[1,510]},{202:[1,511]},{202:[1,513],204:[1,514],205:[1,512],207:[1,515]},{202:[1,516]},o($Va2,[2,1056]),o($Va2,[2,1057]),o($Vt1,[2,891]),o($Vt1,[2,892]),o($Vt1,[2,893]),{169:[1,517]},o($VP1,$VQ1,{340:44,59:74,295:116,296:124,292:125,260:126,298:127,423:129,261:134,263:135,265:136,444:137,87:138,272:139,273:140,274:141,214:144,446:145,119:146,278:147,448:150,449:151,389:152,392:153,450:154,461:312,138:440,166:518,432:519,54:$VF,55:$VG,63:$Ve,79:$VH,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,293:$V01,294:$V11,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81}),{32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,433:[1,520],434:233},{81:[1,521]},{81:[1,522],85:$Vy2},o($Vz2,[2,1003],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:524,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VA2,[2,1071]),{81:[1,525]},{32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,362:[1,526],367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,434:233},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:527,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vt1,[2,549]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:528,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{81:[2,1112],218:530,219:$VB2,478:529},o($Vf2,[2,1107]),{126:[1,532]},{305:[2,513]},{97:533,353:$Vk2,354:$Vl2,356:$Vm2,359:$Vn2,360:$Vo2,364:$Vp2,368:$Vq2,378:$Vr2,379:$Vs2,381:$Vt2,382:$Vu2,385:$Vv2},o($VA1,[2,488]),{81:[1,534],85:$Ve2},o($VA1,[2,501]),{81:[1,535],85:$Ve2},{32:$Vc1,77:$Ve1,81:[1,536],95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,434:233},o($Vt1,[2,1037]),o($V2,[2,1151],{85:[1,537]}),o($VC2,[2,1164]),{54:$VF,55:$VG,59:74,63:$Ve,87:138,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:539,296:124,298:127,340:44,341:$Vh,342:$Vi,351:$Vo,383:$V71,384:$V81,389:152,392:153,423:129,442:538,444:137,446:145,448:150,449:151,450:154},o([79,140,228],[2,807]),{59:74,63:$Ve,87:540,113:$Vf,119:146,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{44:541,155:23,156:24,161:$V8,228:$V9},o($VI1,[2,162]),{79:$VD1,130:542},o($VJ1,[2,82]),{59:74,63:$Ve,84:543,87:394,113:$Vf,119:146,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},o($VF1,[2,98],{89:544,92:545,93:546,49:549,50:$VH1,95:$VD2,96:$VE2}),o($VF2,[2,110]),o($VF2,[2,111]),o($VF2,[2,112]),o($VF2,[2,113]),o($VF2,[2,114]),o($VF2,[2,115]),o($VF2,[2,116]),o($VF2,[2,869]),o($VF2,[2,870]),o($VF2,$VG2,{428:550,79:$VH2}),o($VF2,[2,883],{429:552,79:[1,553]}),o($VF2,[2,873]),o($VF2,[2,874]),o($VF2,[2,875]),o($VF2,[2,876]),o($VF2,[2,877]),o($VF2,[2,878]),o($VF2,[2,879]),o($VF2,$VG2,{428:554,79:$VH2}),{108:[1,555]},{108:[1,556]},{108:[1,557]},{44:558,155:23,156:24,161:$V8,228:$V9},o($VL1,[2,214]),{59:74,63:$Ve,87:138,113:$Vf,119:146,149:559,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,423:210},o($VF1,[2,216]),o($VI2,[2,369],{217:560,218:561,219:$VB2}),o($Vw2,[2,307]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:562,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:564,178:563,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($V12,[2,271]),{40:325,55:$VG,59:74,63:$Ve,79:$Vu1,113:$Vf,119:171,194:565,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo,392:172,431:326,455:323,456:324},o($VJ2,$VK2,{195:566,209:$VL2}),o($Vx2,[2,327]),o($Vx2,[2,328]),{202:[1,568]},o($Vx2,[2,330]),{202:[1,569]},o($Vx2,[2,333]),{202:[1,570]},{202:[1,571]},o($Vx2,[2,336]),{202:[1,572]},o($Vx2,[2,338]),{202:[1,573]},{202:[1,574]},o($Vx2,[2,341]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:575,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{81:[1,576]},{81:[1,577],85:$Vy2},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:578,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vt1,[2,903]),o($Vt1,[2,904]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:579,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o([43,54,55,63,81,85,113,129,169,177,188,201,202,203,204,205,206,207,208,213,215,219,226,227,249,251,333,337,341,342,349,351,352,361,362,371,376,380,386,433],[2,906],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($VA2,[2,1072]),o($Vt1,[2,1180]),o($VY1,[2,1201],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($VF1,[2,554],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),{81:[1,580]},{81:[2,1117],129:[1,585],376:[1,584],482:581,484:582,485:583},{126:[1,586]},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:440,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,432:587,444:137,446:145,448:150,449:151,450:154},{81:[1,588]},o($VA1,[2,489]),o($VA1,[2,503]),o($VA1,[2,507]),{79:$Vg2,503:589},{81:[1,590],85:[1,591]},o($VF1,[2,1016]),o($VF1,[2,811]),o($V2,[2,199]),{79:[1,593],131:592},o($VF1,[2,85]),o($VF1,[2,94]),o($VF1,[2,99],{49:549,93:594,50:$VH1,95:$VD2,96:$VE2}),o($VM2,[2,100]),{96:[1,595]},o($VM2,[2,107]),o($VM2,[2,108]),o($VF2,[2,871]),{383:[1,596]},o($VF2,[2,872]),{383:[1,597]},o($VF2,[2,880]),{88:598,97:470,98:471,99:472,100:473,101:474,102:475,103:476,107:$Vh2,109:[1,599],112:$Vi2,113:$Vj2,353:$Vk2,354:$Vl2,356:$Vm2,359:$Vn2,360:$Vo2,364:$Vp2,368:$Vq2,378:$Vr2,379:$Vs2,381:$Vt2,382:$Vu2,385:$Vv2},{97:600,109:[1,601],353:$Vk2,354:$Vl2,356:$Vm2,359:$Vn2,360:$Vo2,364:$Vp2,368:$Vq2,378:$Vr2,379:$Vs2,381:$Vt2,382:$Vu2,385:$Vv2},{59:74,63:$Ve,109:[1,603],113:$Vf,114:602,116:604,119:605,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},o($V2,[2,203]),o($VF1,$VG1,{49:288,48:606,50:$VH1}),o($Vu,[2,362],{211:607,212:608,213:[1,609]}),o($VI2,[2,370]),o($Vw2,[2,308],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($V02,[2,279],{85:[1,610]}),o($VN2,[2,294],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($VJ2,$VK2,{195:611,209:$VL2}),o($VJ2,[2,314]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:612,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vx2,[2,329]),o($Vx2,[2,332]),o($Vx2,[2,334]),o($Vx2,[2,335]),o($Vx2,[2,337]),o($Vx2,[2,339]),o($Vx2,[2,340]),o($VX1,[2,894],{434:233}),o($Vt1,[2,901]),o($Vt1,[2,902]),o($VW1,[2,905],{434:233,32:$Vc1,77:$Ve1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,350:$Vm1,367:$Vo1,370:$Vp1,373:$Vr1,374:$Vs1}),o($Vz2,[2,1004],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($Vt1,[2,1101]),{81:[2,1113]},{81:[2,1118]},{352:[1,613],489:[1,614]},o($VO2,[2,1135]),o($VO2,[2,1136]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:617,214:144,215:$Vg,220:615,223:616,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($Vf2,[2,1108],{85:$Vy2}),o($Vt1,[2,521]),o($VC2,[2,1165]),o($VC2,[2,1166]),{54:$VF,55:$VG,59:74,63:$Ve,87:138,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:618,296:124,298:127,340:44,341:$Vh,342:$Vi,351:$Vo,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VI1,[2,166]),{125:$VP2,134:619,136:620},o($VM2,[2,101]),o($VM2,[2,106]),{81:[1,622]},{81:[1,623],85:[1,624]},{109:[1,625]},o($VF2,[2,121]),{85:[1,626]},o($VF2,[2,125]),{85:[1,628],109:[1,627]},o($VF2,[2,131]),o($VQ2,[2,133]),{120:[1,629]},o($VF1,[2,217]),o($Vu,[2,424]),o($Vu,[2,363]),{214:630,215:[1,631],254:$VN,383:$V71,384:$V81,448:150,449:151},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:632,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VJ2,[2,315]),o($VJ2,[2,357],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($VR2,$VS2,{486:633}),o($VR2,$VS2,{486:634}),o([81,129,213,249,333,337,376],[2,371],{85:[1,635]}),o($VT2,[2,374]),o($VT2,[2,384],{434:233,225:636,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,226:[1,637],227:[1,638],240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($VF1,[2,1017]),{81:[1,639],85:[1,640]},o($VF1,[2,175]),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:641,140:[1,642],214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VF2,[2,882]),o($VF2,[2,884]),{383:[1,643]},o($VF2,[2,120]),{88:644,97:470,98:471,99:472,100:473,101:474,102:475,103:476,107:$Vh2,112:$Vi2,113:$Vj2,353:$Vk2,354:$Vl2,356:$Vm2,359:$Vn2,360:$Vo2,364:$Vp2,368:$Vq2,378:$Vr2,379:$Vs2,381:$Vt2,382:$Vu2,385:$Vv2},o($VF2,[2,130]),{59:74,63:$Ve,113:$Vf,116:645,119:605,215:$Vg,340:44,341:$Vh,342:$Vi,351:$Vo},{88:646,97:470,98:471,99:472,100:473,101:474,102:475,103:476,107:$Vh2,112:$Vi2,113:$Vj2,353:$Vk2,354:$Vl2,356:$Vm2,359:$Vn2,360:$Vo2,364:$Vp2,368:$Vq2,378:$Vr2,379:$Vs2,381:$Vt2,382:$Vu2,385:$Vv2},o($Vu,[2,364],{85:[1,647]}),o($Vu,[2,366],{85:[1,648]}),o($VN2,[2,295],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),o($VU2,$VV2,{487:649,497:650,357:$VW2,383:$VX2,489:$VY2}),o($VU2,$VV2,{497:650,487:654,357:$VW2,383:$VX2,489:$VY2}),{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:617,214:144,215:$Vg,223:655,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VT2,[2,381]),o($VT2,[2,385]),o($VT2,[2,386]),o($VI1,[2,172]),{125:$VP2,136:656},{32:$Vc1,77:$Ve1,95:$Vf1,108:[1,658],109:$Vh1,139:657,142:[1,659],240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1,434:233},{108:$VZ2,139:660,142:$V_2},{81:[1,663]},{109:[1,664]},o($VQ2,[2,134]),o($VQ2,$VG1,{49:288,48:665,50:$VH1}),{214:666,254:$VN,383:$V71,384:$V81,448:150,449:151},{215:[1,667]},{81:$V$2,349:$V03,488:668},{372:[1,670]},{375:[1,671]},o($V13,[2,1148]),o($V13,[2,1149]),{81:$V$2,349:$V03,488:672},o($VT2,[2,375]),o($VF1,[2,176]),{140:[1,673]},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:330,140:$V23,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:332,140:$V33,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:674,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},o($VZ1,$V23),o($VZ1,$V33),o($VF2,[2,885]),o($VF2,[2,124]),o($VQ2,[2,140]),o($Vu,[2,365]),o($Vu,[2,367]),{81:[2,1119]},{357:[1,675],383:$VX2,489:$VY2,497:676},o($VU2,[2,1138]),o($VU2,[2,1139]),{81:[2,1120]},o($VF1,[2,184],{139:677,108:$VZ2,142:$V_2}),o($VF1,[2,183],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1}),{375:[1,678]},{365:[1,679]},{54:$VF,55:$VG,59:74,63:$Ve,79:$VH,87:138,95:$VI,96:$VJ,107:$VK,112:$VL,113:$Vf,119:146,138:680,214:144,215:$Vg,254:$VN,256:$VO,257:$VP,258:$VQ,260:126,261:134,263:135,265:136,272:139,273:140,274:141,278:147,281:$VR,282:$VS,283:$VT,284:$VU,285:$VV,286:$VW,287:$VX,288:$VY,289:$VZ,290:$V_,291:$V$,292:125,293:$V01,294:$V11,295:116,296:124,298:127,340:44,341:$Vh,342:$Vi,344:$V21,345:$V31,348:$V41,351:$Vo,355:$V51,363:$V61,383:$V71,384:$V81,389:152,392:153,423:129,444:137,446:145,448:150,449:151,450:154},{81:[2,1143]},{81:[2,1144]},o($VF1,[2,182],{434:233,32:$Vc1,77:$Ve1,95:$Vf1,108:$Vg1,109:$Vh1,142:$Vi1,240:$Vj1,345:$Vk1,349:$Vl1,350:$Vm1,352:$Vn1,367:$Vo1,370:$Vp1,371:$Vq1,373:$Vr1,374:$Vs1})],
defaultActions: {37:[2,610],70:[2,586],71:[2,588],106:[2,850],130:[2,517],131:[2,518],132:[2,519],133:[2,520],155:[2,493],156:[2,494],157:[2,495],158:[2,496],159:[2,497],160:[2,498],161:[2,499],162:[2,500],170:[2,34],173:[2,43],209:[2,600],364:[2,512],406:[2,1075],407:[2,1077],408:[2,1079],409:[2,1081],410:[2,1083],411:[2,1085],412:[2,1087],413:[2,1089],451:[2,513],581:[2,1113],582:[2,1118],668:[2,1119],672:[2,1120],678:[2,1143],679:[2,1144]},
parseError: function parseError (str, hash) {
    if (hash.recoverable) {
        this.trace(str);
    } else {
        var error = new Error(str);
        error.hash = hash;
        throw error;
    }
},
/**
 * @param {string} input
 *
 * @return {AutocompleteParseResult}
 */
parse: function parse (input) {
    var self = this,
        stack = [0],
        tstack = [], // token stack
        vstack = [null], // semantic value stack
        lstack = [], // location stack
        table = this.table,
        yytext = '',
        yylineno = 0,
        yyleng = 0,
        recovering = 0,
        TERROR = 2,
        EOF = 1;

    var args = lstack.slice.call(arguments, 1);

    //this.reductionCount = this.shiftCount = 0;

    var lexer = Object.create(this.lexer);
    var sharedState = { yy: {} };
    // copy state
    for (var k in this.yy) {
      if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
        sharedState.yy[k] = this.yy[k];
      }
    }

    lexer.setInput(input, sharedState.yy);
    sharedState.yy.lexer = lexer;
    sharedState.yy.parser = this;
    if (typeof lexer.yylloc == 'undefined') {
        lexer.yylloc = {};
    }
    var yyloc = lexer.yylloc;
    lstack.push(yyloc);

    var ranges = lexer.options && lexer.options.ranges;

    if (typeof sharedState.yy.parseError === 'function') {
        this.parseError = sharedState.yy.parseError;
    } else {
        this.parseError = Object.getPrototypeOf(this).parseError;
    }

    function popStack (n) {
        stack.length = stack.length - 2 * n;
        vstack.length = vstack.length - n;
        lstack.length = lstack.length - n;
    }

_token_stack:
    var lex = function () {
        var token;
        token = lexer.lex() || EOF;
        // if token isn't its numeric value, convert
        if (typeof token !== 'number') {
            token = self.symbols_[token] || token;
        }
        return token;
    }

    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
    while (true) {
        // retreive state number from top of stack
        state = stack[stack.length - 1];

        // use default actions if available
        if (this.defaultActions[state]) {
            action = this.defaultActions[state];
        } else {
            if (symbol === null || typeof symbol == 'undefined') {
                symbol = lex();
            }
            // read action for current state and first input
            action = table[state] && table[state][symbol];
        }

_handle_error:
        // handle parse error
        if (typeof action === 'undefined' || !action.length || !action[0]) {
            var error_rule_depth;
            var errStr = '';

            // Return the rule stack depth where the nearest error rule can be found.
            // Return FALSE when no error recovery rule was found.
            function locateNearestErrorRecoveryRule(state) {
                var stack_probe = stack.length - 1;
                var depth = 0;

                // try to recover from error
                for(;;) {
                    // check for error recovery rule in this state
                    if ((TERROR.toString()) in table[state]) {
                        return depth;
                    }
                    if (state === 0 || stack_probe < 2) {
                        return false; // No suitable error recovery rule available.
                    }
                    stack_probe -= 2; // popStack(1): [symbol, action]
                    state = stack[stack_probe];
                    ++depth;
                }
            }

            if (!recovering) {
                // first see if there's any chance at hitting an error recovery rule:
                error_rule_depth = locateNearestErrorRecoveryRule(state);

                // Report error
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push("'"+this.terminals_[p]+"'");
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
                } else {
                    errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
                                  (symbol == EOF ? "end of input" :
                                              ("'"+(this.terminals_[symbol] || symbol)+"'"));
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: lexer.yylloc,
                    ruleId: stack.slice(stack.length - 2, stack.length).join('_'),
                    expected: expected,
                    recoverable: (error_rule_depth !== false)
                });
            } else if (preErrorSymbol !== EOF) {
                error_rule_depth = locateNearestErrorRecoveryRule(state);
            }

            // just recovered from another error
            if (recovering == 3) {
                if (symbol === EOF || preErrorSymbol === EOF) {
                    throw new Error(errStr || 'Parsing halted while starting to recover from another error.');
                }

                // discard current lookahead and grab another
                yyleng = lexer.yyleng;
                yytext = lexer.yytext;
                yylineno = lexer.yylineno;
                yyloc = lexer.yylloc;
                symbol = lex();
            }

            // try to recover from error
            if (error_rule_depth === false) {
                throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');
            }
            popStack(error_rule_depth);

            preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
            symbol = TERROR;         // insert generic error symbol as new lookahead
            state = stack[stack.length-1];
            action = table[state] && table[state][TERROR];
            recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
        }

        // this shouldn't happen, unless resolve defaults are off
        if (action[0] instanceof Array && action.length > 1) {
            throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
        }

        switch (action[0]) {
            case 1: // shift
                //this.shiftCount++;

                stack.push(symbol);
                vstack.push(lexer.yytext);
                lstack.push(lexer.yylloc);
                stack.push(action[1]); // push state
                symbol = null;
                if (!preErrorSymbol) { // normal execution/no error
                    yyleng = lexer.yyleng;
                    yytext = lexer.yytext;
                    yylineno = lexer.yylineno;
                    yyloc = lexer.yylloc;
                    if (recovering > 0) {
                        recovering--;
                    }
                } else {
                    // error just occurred, resume old lookahead f/ before error
                    symbol = preErrorSymbol;
                    preErrorSymbol = null;
                }
                break;

            case 2:
                // reduce
                //this.reductionCount++;

                len = this.productions_[action[1]][1];

                // perform semantic action
                yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
                // default location, uses first token for firsts, last for lasts
                yyval._$ = {
                    first_line: lstack[lstack.length-(len||1)].first_line,
                    last_line: lstack[lstack.length-1].last_line,
                    first_column: lstack[lstack.length-(len||1)].first_column,
                    last_column: lstack[lstack.length-1].last_column
                };
                if (ranges) {
                  yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
                }
                r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));

                if (typeof r !== 'undefined') {
                    return r;
                }

                // pop off stack
                if (len) {
                    stack = stack.slice(0,-1*len*2);
                    vstack = vstack.slice(0, -1*len);
                    lstack = lstack.slice(0, -1*len);
                }

                stack.push(this.productions_[action[1]][0]);    // push nonterminal (reduce)
                vstack.push(yyval.$);
                lstack.push(yyval._$);
                // goto new state = table[STATE][NONTERMINAL]
                newState = table[stack[stack.length-2]][stack[stack.length-1]];
                stack.push(newState);
                break;

            case 3:
                // accept
                return true;
        }

    }

    return true;
}};


SqlParseSupport.initSyntaxParser(parser);/* generated by jison-lex 0.3.4 */
var lexer = (function(){
var lexer = ({

EOF:1,

parseError:function parseError(str, hash) {
        if (this.yy.parser) {
            this.yy.parser.parseError(str, hash);
        } else {
            throw new Error(str);
        }
    },

// resets the lexer, sets new input
setInput:function (input, yy) {
        this.yy = yy || this.yy || {};
        this._input = input;
        this._more = this._backtrack = this.done = false;
        this.yylineno = this.yyleng = 0;
        this.yytext = this.matched = this.match = '';
        this.conditionStack = ['INITIAL'];
        this.yylloc = {
            first_line: 1,
            first_column: 0,
            last_line: 1,
            last_column: 0
        };
        if (this.options.ranges) {
            this.yylloc.range = [0,0];
        }
        this.offset = 0;
        return this;
    },

// consumes and returns one char from the input
input:function () {
        var ch = this._input[0];
        this.yytext += ch;
        this.yyleng++;
        this.offset++;
        this.match += ch;
        this.matched += ch;
        var lines = ch.match(/(?:\r\n?|\n).*/g);
        if (lines) {
            this.yylineno++;
            this.yylloc.last_line++;
        } else {
            this.yylloc.last_column++;
        }
        if (this.options.ranges) {
            this.yylloc.range[1]++;
        }

        this._input = this._input.slice(1);
        return ch;
    },

// unshifts one char (or a string) into the input
unput:function (ch) {
        var len = ch.length;
        var lines = ch.split(/(?:\r\n?|\n)/g);

        this._input = ch + this._input;
        this.yytext = this.yytext.substr(0, this.yytext.length - len);
        //this.yyleng -= len;
        this.offset -= len;
        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
        this.match = this.match.substr(0, this.match.length - 1);
        this.matched = this.matched.substr(0, this.matched.length - 1);

        if (lines.length - 1) {
            this.yylineno -= lines.length - 1;
        }
        var r = this.yylloc.range;

        this.yylloc = {
            first_line: this.yylloc.first_line,
            last_line: this.yylineno + 1,
            first_column: this.yylloc.first_column,
            last_column: lines ?
                (lines.length === oldLines.length ? this.yylloc.first_column : 0)
                 + oldLines[oldLines.length - lines.length].length - lines[0].length :
              this.yylloc.first_column - len
        };

        if (this.options.ranges) {
            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
        }
        this.yyleng = this.yytext.length;
        return this;
    },

// When called from action, caches matched text and appends it on next action
more:function () {
        this._more = true;
        return this;
    },

// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
reject:function () {
        if (this.options.backtrack_lexer) {
            this._backtrack = true;
        } else {
            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                text: "",
                token: null,
                line: this.yylineno
            });

        }
        return this;
    },

// retain first n characters of the match
less:function (n) {
        this.unput(this.match.slice(n));
    },

// displays already matched input, i.e. for error messages
pastInput:function () {
        var past = this.matched.substr(0, this.matched.length - this.match.length);
        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
    },

// displays upcoming input, i.e. for error messages
upcomingInput:function () {
        var next = this.match;
        if (next.length < 20) {
            next += this._input.substr(0, 20-next.length);
        }
        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
    },

// displays the character position where the lexing error occurred, i.e. for error messages
showPosition:function () {
        var pre = this.pastInput();
        var c = new Array(pre.length + 1).join("-");
        return pre + this.upcomingInput() + "\n" + c + "^";
    },

// test the lexed token: return FALSE when not a match, otherwise return token
test_match:function(match, indexed_rule) {
        var token,
            lines,
            backup;

        if (this.options.backtrack_lexer) {
            // save context
            backup = {
                yylineno: this.yylineno,
                yylloc: {
                    first_line: this.yylloc.first_line,
                    last_line: this.last_line,
                    first_column: this.yylloc.first_column,
                    last_column: this.yylloc.last_column
                },
                yytext: this.yytext,
                match: this.match,
                matches: this.matches,
                matched: this.matched,
                yyleng: this.yyleng,
                offset: this.offset,
                _more: this._more,
                _input: this._input,
                yy: this.yy,
                conditionStack: this.conditionStack.slice(0),
                done: this.done
            };
            if (this.options.ranges) {
                backup.yylloc.range = this.yylloc.range.slice(0);
            }
        }

        lines = match[0].match(/(?:\r\n?|\n).*/g);
        if (lines) {
            this.yylineno += lines.length;
        }
        this.yylloc = {
            first_line: this.yylloc.last_line,
            last_line: this.yylineno + 1,
            first_column: this.yylloc.last_column,
            last_column: lines ?
                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
                         this.yylloc.last_column + match[0].length
        };
        this.yytext += match[0];
        this.match += match[0];
        this.matches = match;
        this.yyleng = this.yytext.length;
        if (this.options.ranges) {
            this.yylloc.range = [this.offset, this.offset += this.yyleng];
        }
        this._more = false;
        this._backtrack = false;
        this._input = this._input.slice(match[0].length);
        this.matched += match[0];
        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
        if (this.done && this._input) {
            this.done = false;
        }
        if (token) {
            return token;
        } else if (this._backtrack) {
            // recover context
            for (var k in backup) {
                this[k] = backup[k];
            }
            return false; // rule action called reject() implying the next rule should be tested instead.
        }
        return false;
    },

// return next match in input
next:function () {
        if (this.done) {
            return this.EOF;
        }
        if (!this._input) {
            this.done = true;
        }

        var token,
            match,
            tempMatch,
            index;
        if (!this._more) {
            this.yytext = '';
            this.match = '';
        }
        var rules = this._currentRules();
        for (var i = 0; i < rules.length; i++) {
            tempMatch = this._input.match(this.rules[rules[i]]);
            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                match = tempMatch;
                index = i;
                if (this.options.backtrack_lexer) {
                    token = this.test_match(tempMatch, rules[i]);
                    if (token !== false) {
                        return token;
                    } else if (this._backtrack) {
                        match = false;
                        continue; // rule action called reject() implying a rule MISmatch.
                    } else {
                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                        return false;
                    }
                } else if (!this.options.flex) {
                    break;
                }
            }
        }
        if (match) {
            token = this.test_match(match, rules[index]);
            if (token !== false) {
                return token;
            }
            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
            return false;
        }
        if (this._input === "") {
            return this.EOF;
        } else {
            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                text: "",
                token: null,
                line: this.yylineno
            });
        }
    },

// return next match that has a token
lex:function lex () {
        var r = this.next();
        if (r) {
            return r;
        } else {
            return this.lex();
        }
    },

// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
begin:function begin (condition) {
        this.conditionStack.push(condition);
    },

// pop the previously active lexer condition state off the condition stack
popState:function popState () {
        var n = this.conditionStack.length - 1;
        if (n > 0) {
            return this.conditionStack.pop();
        } else {
            return this.conditionStack[0];
        }
    },

// produce the lexer rule set which is active for the currently active lexer condition state
_currentRules:function _currentRules () {
        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
        } else {
            return this.conditions["INITIAL"].rules;
        }
    },

// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
topState:function topState (n) {
        n = this.conditionStack.length - 1 - Math.abs(n || 0);
        if (n >= 0) {
            return this.conditionStack[n];
        } else {
            return "INITIAL";
        }
    },

// alias for begin(condition)
pushState:function pushState (condition) {
        this.begin(condition);
    },

// return the number of states currently on the stack
stateStackSize:function stateStackSize() {
        return this.conditionStack.length;
    },
options: {"case-insensitive":true,"flex":true},
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
var YYSTATE=YY_START;
switch($avoiding_name_collisions) {
case 0: /* skip whitespace */ 
break;
case 1: /* skip comments */ 
break;
case 2: /* skip comments */ 
break;
case 3: parser.yy.partialCursor = false; parser.yy.cursorFound = yy_.yylloc; return 5; 
break;
case 4: parser.yy.partialCursor = true; parser.yy.cursorFound = yy_.yylloc; return 387; 
break;
case 5: this.popState(); return 433; 
break;
case 6: return 30; 
break;
case 7: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('ALTER', yy_.yylloc, yy.lexer.upcomingInput()); return 4; 
break;
case 8: return 349; 
break;
case 9: return 43; 
break;
case 10: return 226; 
break;
case 11: this.begin('between'); return 352; 
break;
case 12: return 353; 
break;
case 13: return 354; 
break;
case 14: return 126; 
break;
case 15: return 399; 
break;
case 16: return 355; 
break;
case 17: return 356; 
break;
case 18: return 50; 
break;
case 19: parser.determineCase(yy_.yytext); return 8; 
break;
case 20: return 201; 
break;
case 21: return 357; 
break;
case 22: return 358; 
break;
case 23: return 359; 
break;
case 24: return 227; 
break;
case 25: return 234; 
break;
case 26: return 350; 
break;
case 27: return 360; 
break;
case 28: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('DROP', yy_.yylloc, yy.lexer.upcomingInput()); return 12; 
break;
case 29: return 361; 
break;
case 30: return 362; 
break;
case 31: parser.yy.correlatedSubQuery = true; return 363; 
break;
case 32: return 257; 
break;
case 33: return 364; 
break;
case 34: return 365; 
break;
case 35: parser.determineCase(yy_.yytext); return 169; 
break;
case 36: return 203; 
break;
case 37: return 177; 
break;
case 38: return 188; 
break;
case 39: return 293; 
break;
case 40: return 367; 
break;
case 41: return 205; 
break;
case 42: return 368; 
break;
case 43: return 369; 
break;
case 44: return 370; 
break;
case 45: return 202; 
break;
case 46: return 206; 
break;
case 47: return 77; 
break;
case 48: return 213; 
break;
case 49: return 95; 
break;
case 50: return 96; 
break;
case 51: return 209; 
break;
case 52: return 341; 
break;
case 53: return 371; 
break;
case 54: return 219; 
break;
case 55: return 204; 
break;
case 56: return 125; 
break;
case 57: return 372; 
break;
case 58: return 154; 
break;
case 59: return 129; 
break;
case 60: return 373; 
break;
case 61: return 208; 
break;
case 62: return 374; 
break;
case 63: return 375; 
break;
case 64: return 63; 
break;
case 65: return 376; 
break;
case 66: return 377; 
break;
case 67: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('SELECT', yy_.yylloc); return 228; 
break;
case 68: return 207; 
break;
case 69: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('SET', yy_.yylloc); return 16; 
break;
case 70: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('SHOW', yy_.yylloc); return 'SHOW'; 
break;
case 71: return 378; 
break;
case 72: return 379; 
break;
case 73: return 39; 
break;
case 74: return 380; 
break;
case 75: return 381; 
break;
case 76: return 382; 
break;
case 77: return 'TO'; 
break;
case 78: return 256; 
break;
case 79: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('TRUNCATE', yy_.yylloc, yy.lexer.upcomingInput()); return 258; 
break;
case 80: return 489; 
break;
case 81: return 249; 
break;
case 82: parser.determineCase(yy_.yytext); return 314; 
break;
case 83: parser.determineCase(yy_.yytext); return 499; 
break;
case 84: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('USE', yy_.yylloc); return 330; 
break;
case 85: return 140; 
break;
case 86: return 385; 
break;
case 87: return 47; 
break;
case 88: return 386; 
break;
case 89: return 251; 
break;
case 90: parser.determineCase(yy_.yytext); parser.addStatementTypeLocation('WITH', yy_.yylloc); return 161; 
break;
case 91: return 305; 
break;
case 92: return 63; 
break;
case 93: yy.lexer.unput('('); yy_.yytext = 'avg'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 281; 
break;
case 94: yy.lexer.unput('('); yy_.yytext = 'cast'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 294; 
break;
case 95: yy.lexer.unput('('); yy_.yytext = 'count'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 289; 
break;
case 96: yy.lexer.unput('('); yy_.yytext = 'max'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 282; 
break;
case 97: yy.lexer.unput('('); yy_.yytext = 'min'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 283; 
break;
case 98: yy.lexer.unput('('); yy_.yytext = 'stddev_pop'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 284; 
break;
case 99: yy.lexer.unput('('); yy_.yytext = 'stddev_samp'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 285; 
break;
case 100: yy.lexer.unput('('); yy_.yytext = 'sum'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 290; 
break;
case 101: yy.lexer.unput('('); yy_.yytext = 'var_pop'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 286; 
break;
case 102: yy.lexer.unput('('); yy_.yytext = 'var_samp'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 287; 
break;
case 103: yy.lexer.unput('('); yy_.yytext = 'variance'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 288; 
break;
case 104: yy.lexer.unput('('); yy_.yytext = 'cume_dist'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 105: yy.lexer.unput('('); yy_.yytext = 'dense_rank'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 106: yy.lexer.unput('('); yy_.yytext = 'first_value'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 107: yy.lexer.unput('('); yy_.yytext = 'lag'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 108: yy.lexer.unput('('); yy_.yytext = 'last_value'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 109: yy.lexer.unput('('); yy_.yytext = 'lead'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 110: yy.lexer.unput('('); yy_.yytext = 'rank'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 111: yy.lexer.unput('('); yy_.yytext = 'row_number'; parser.addFunctionLocation(yy_.yylloc, yy_.yytext); return 291; 
break;
case 112: return 383; 
break;
case 113: return 383; 
break;
case 114: return 384; 
break;
case 115: return 342; 
break;
case 116: parser.yy.cursorFound = true; return 5; 
break;
case 117: parser.yy.cursorFound = true; return 387; 
break;
case 118: return 366; 
break;
case 119: parser.addFileLocation(yy_.yylloc, yy_.yytext); return 494; 
break;
case 120: this.popState(); return 495; 
break;
case 121: return 333; 
break;
case 122: return 349; 
break;
case 123: return 371; 
break;
case 124: return 32; 
break;
case 125: return 108; 
break;
case 126: return 109; 
break;
case 127: return 142; 
break;
case 128: return 142; 
break;
case 129: return 142; 
break;
case 130: return 142; 
break;
case 131: return 142; 
break;
case 132: return 345; 
break;
case 133: return 240; 
break;
case 134: return 350; 
break;
case 135: return 350; 
break;
case 136: return 350; 
break;
case 137: return 350; 
break;
case 138: return 350; 
break;
case 139: return 350; 
break;
case 140: return 85; 
break;
case 141: return 254; 
break;
case 142: return 120; 
break;
case 143: return 337; 
break;
case 144: return 348; 
break;
case 145: return 344; 
break;
case 146: return 79; 
break;
case 147: return 81; 
break;
case 148: return 346; 
break;
case 149: return 347; 
break;
case 150: return 215; 
break;
case 151: this.begin('backtickedValue'); return 351; 
break;
case 152:
                                             if (parser.handleQuotedValueWithCursor(this, yy_.yytext, yy_.yylloc, '`')) {
                                               return 391;
                                             }
                                             return 56;
                                           
break;
case 153: this.popState(); return 351; 
break;
case 154: this.begin('singleQuotedValue'); return 54; 
break;
case 155:
                                             if (parser.handleQuotedValueWithCursor(this, yy_.yytext, yy_.yylloc, '\'')) {
                                               return 391;
                                             }
                                             return 56;
                                           
break;
case 156: this.popState(); return 54; 
break;
case 157: this.begin('doubleQuotedValue'); return 55; 
break;
case 158:
                                             if (parser.handleQuotedValueWithCursor(this, yy_.yytext, yy_.yylloc, '"')) {
                                               return 391;
                                             }
                                             return 56;
                                           
break;
case 159: this.popState(); return 55; 
break;
case 160: return 333; 
break;
case 161: /* To prevent console logging of unknown chars */ 
break;
case 162: 
break;
case 163: 
break;
case 164: 
break;
case 165: 
break;
case 166: 
break;
case 167:console.log(yy_.yytext);
break;
}
},
rules: [/^(?:\s)/i,/^(?:--.*)/i,/^(?:[/][*][^*]*[*]+([^/*][^*]*[*]+)*[/])/i,/^(?:\u2020)/i,/^(?:\u2021)/i,/^(?:AND)/i,/^(?:ALL)/i,/^(?:ALTER)/i,/^(?:AND)/i,/^(?:AS)/i,/^(?:ASC)/i,/^(?:BETWEEN)/i,/^(?:BIGINT)/i,/^(?:BOOLEAN)/i,/^(?:BY)/i,/^(?:CASCADE)/i,/^(?:CASE)/i,/^(?:CHAR)/i,/^(?:COMMENT)/i,/^(?:CREATE)/i,/^(?:CROSS)/i,/^(?:CURRENT)/i,/^(?:DATABASE)/i,/^(?:DECIMAL)/i,/^(?:DESC)/i,/^(?:DISTINCT)/i,/^(?:DIV)/i,/^(?:DOUBLE)/i,/^(?:DROP)/i,/^(?:ELSE)/i,/^(?:END)/i,/^(?:EXISTS)/i,/^(?:FALSE)/i,/^(?:FLOAT)/i,/^(?:FOLLOWING)/i,/^(?:FROM)/i,/^(?:FULL)/i,/^(?:GROUP)/i,/^(?:HAVING)/i,/^(?:IF)/i,/^(?:IN)/i,/^(?:INNER)/i,/^(?:INT)/i,/^(?:INTO)/i,/^(?:IS)/i,/^(?:JOIN)/i,/^(?:LEFT)/i,/^(?:LIKE)/i,/^(?:LIMIT)/i,/^(?:NOT)/i,/^(?:NULL)/i,/^(?:ON)/i,/^(?:OPTION)/i,/^(?:OR)/i,/^(?:ORDER)/i,/^(?:OUTER)/i,/^(?:PARTITION)/i,/^(?:PRECEDING)/i,/^(?:PURGE)/i,/^(?:RANGE)/i,/^(?:REGEXP)/i,/^(?:RIGHT)/i,/^(?:RLIKE)/i,/^(?:ROW)/i,/^(?:ROLE)/i,/^(?:ROWS)/i,/^(?:SCHEMA)/i,/^(?:SELECT)/i,/^(?:SEMI)/i,/^(?:SET)/i,/^(?:SHOW)/i,/^(?:SMALLINT)/i,/^(?:STRING)/i,/^(?:TABLE)/i,/^(?:THEN)/i,/^(?:TIMESTAMP)/i,/^(?:TINYINT)/i,/^(?:TO)/i,/^(?:TRUE)/i,/^(?:TRUNCATE)/i,/^(?:UNBOUNDED)/i,/^(?:UNION)/i,/^(?:UPDATE)/i,/^(?:UPSERT)/i,/^(?:USE)/i,/^(?:VALUES)/i,/^(?:VARCHAR)/i,/^(?:VIEW)/i,/^(?:WHEN)/i,/^(?:WHERE)/i,/^(?:WITH)/i,/^(?:OVER)/i,/^(?:ROLE)/i,/^(?:AVG\s*\()/i,/^(?:CAST\s*\()/i,/^(?:COUNT\s*\()/i,/^(?:MAX\s*\()/i,/^(?:MIN\s*\()/i,/^(?:STDDEV_POP\s*\()/i,/^(?:STDDEV_SAMP\s*\()/i,/^(?:SUM\s*\()/i,/^(?:VAR_POP\s*\()/i,/^(?:VAR_SAMP\s*\()/i,/^(?:VARIANCE\s*\()/i,/^(?:CUME_DIST\s*\()/i,/^(?:DENSE_RANK\s*\()/i,/^(?:FIRST_VALUE\s*\()/i,/^(?:LAG\s*\()/i,/^(?:LAST_VALUE\s*\()/i,/^(?:LEAD\s*\()/i,/^(?:RANK\s*\()/i,/^(?:ROW_NUMBER\s*\()/i,/^(?:[0-9]+)/i,/^(?:[0-9]+(?:[YSL]|BD)?)/i,/^(?:[0-9]+E)/i,/^(?:[A-Za-z0-9_]+)/i,/^(?:\u2020)/i,/^(?:\u2021)/i,/^(?:\s+['"])/i,/^(?:[^'"\u2020\u2021]+)/i,/^(?:['"])/i,/^(?:$)/i,/^(?:&&)/i,/^(?:\|\|)/i,/^(?:=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:!=)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:<>)/i,/^(?:<=>)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\+)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:\|)/i,/^(?:\^)/i,/^(?:&)/i,/^(?:,)/i,/^(?:\.)/i,/^(?::)/i,/^(?:;)/i,/^(?:~)/i,/^(?:!)/i,/^(?:\()/i,/^(?:\))/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\$\{[^}]*\})/i,/^(?:`)/i,/^(?:[^`]+)/i,/^(?:`)/i,/^(?:')/i,/^(?:(?:\\\\|\\[']|[^'])+)/i,/^(?:')/i,/^(?:")/i,/^(?:(?:\\\\|\\["]|[^"])+)/i,/^(?:")/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i,/^(?:.)/i],
conditions: {"hdfs":{"rules":[116,117,118,119,120,121,163],"inclusive":false},"doubleQuotedValue":{"rules":[158,159,166],"inclusive":false},"singleQuotedValue":{"rules":[155,156,165],"inclusive":false},"backtickedValue":{"rules":[152,153,164],"inclusive":false},"between":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,154,157,160,161,162,167],"inclusive":true},"INITIAL":{"rules":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,154,157,160,161,167],"inclusive":true}}
});
return lexer;
})();
parser.lexer = lexer;
function Parser () {
  this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser;
})();
export default phoenixSyntaxParser;
